none
FindWindowEx在Windows7与XP系统中不同? RRS feed

  • 问题

  • int GetInfo{
    
     hwnd Nowh;
    
     int i;
    
     Nowh=FindWindowEx(0,Nowh,null,null);
    
     for(i=0;Nowh<>0;i++){
    
     Nowh=FindWindowEx(0,Nowh,null,null);
    
     }
    
     //这里显示i、统计数量
    
     return i
    
    }
    
    

    大致代码是这个意思(我不会C语言、、勉强写的、可能语法不对、那个意思应该能看懂的)、这一段代码在XP里是没有任何问题的、可是在Windows7中、我本地机器测试、返回大多数情况是0、偶尔会返回不大于20的数字(实际远远不止)、同样的代码、我找了两位朋友测试、也都是Windows7、其中一位的情况和我一样、然而另一位则一切和XP中一样、返回值正常、、请问这是为何?

    (我让朋友测试的时候、EXE文件是我编译的、即是同一个文件进行测试)

    • 已编辑 4-Dream 2010年7月6日 6:00 修正一下
    2010年7月6日 5:53

答案

  • 如果有可以正常运行的用户/偶尔会出现的错误,一般都是程序有内存泄露或是数组越界的问题。建议你用熟悉的语言写一个最简单的调用FindWindowEx的程序,以排除、找到问题。


    0xBAADF00D
    • 已标记为答案 4-Dream 2010年7月6日 23:40
    2010年7月6日 15:10
    版主
  •  
     
    • 已标记为答案 4-Dream 2010年7月8日 2:27
    • 已编辑 ID已删 2010年8月16日 4:47
    2010年7月7日 3:13

全部回复

  • 这个不是我不发、我原来并不是用C语言写的、我只是空余时间自己了解过一些C语言、觉得懂C的了解的应该会多一些、所以到这里来问了(为了确定不是编译器的问题、我用VB也写过测试的程序、结果也一样)
    2010年7月6日 8:09
  • release version?

    hwnd Nowh = null;

    试一下。


    麻烦把正确答案设为解答。
    2010年7月6日 14:15
    版主
  • 我原本使用delphi写的、结果获取不到、后来用VB试了下、也不行、按照SplendourG说的、初始化变量后也不行、(刚刚装了个VC测试了下、结果也一样)而且为什么同样是Windows7旗舰版、我和一个朋友就不行、然而另一个也是用Windows7的人却可以?(都是我编译的同一个程序)

    2010年7月6日 14:54
  • 如果有可以正常运行的用户/偶尔会出现的错误,一般都是程序有内存泄露或是数组越界的问题。建议你用熟悉的语言写一个最简单的调用FindWindowEx的程序,以排除、找到问题。


    0xBAADF00D
    • 已标记为答案 4-Dream 2010年7月6日 23:40
    2010年7月6日 15:10
    版主
  •  
     
    • 已标记为答案 4-Dream 2010年7月8日 2:27
    • 已编辑 ID已删 2010年8月16日 4:47
    2010年7月7日 3:13
  • 应该是我的问题吧、很奇怪的是、有时候我系统重启一下又OK了、、然而为什么会有人和我一样不行、我还不清楚

    好的、谢谢大家了

    2010年7月8日 2:28