现在有一个窗口,窗口名会随着系统语言更改,比如在英文系统上它叫 testwindow,在中文系统上它叫测试窗口,在日文下是对应的日文说法。并且它的类名也会和其他窗口相同。这种情况下如何才能查找到这个窗口呢?

解决方案 »

  1.   

    注册一个不重的类名,如 xYzaBc
      

  2.   

    呃 我说的挨着找一遍的意思是
    HWND hWnd = NULL;
    hWnd = hWnd || FindWindow("testwindow");
    hWnd = hWnd || FindWindow("测试窗口");
    hWnd = hWnd || FindWindow("日文窗口名字");
      

  3.   


    不是自己写的,窗口是系统的,应该是Exporlor.exe创建的窗口。
      

  4.   

    先用SPY++看看这个窗口有没有特殊的地方,例如它上面有没有一个特殊的控件,或能够明显与其他窗口不同的地方,利用这若干个不同点来确定该窗口。例如弹出的系统表单窗口,它下面有个“SysTabControl32”类的控件,它的父窗体就是我要找的窗体。(当然这里还要有其他一些特征,毕竟一个特征无法保证唯一性,多个特征结合起来就基本能够确定是你要的窗口);