【问题标题】:Couldn't find child window using FindWindowExA()使用 FindWindowExA() 找不到子窗口
【发布时间】:2011-03-13 21:41:10
【问题描述】:

试图获取窗口计算器窗体上的按钮句柄。 Spy++ 显示以下树:

("计算器"; CalcFrame) ->

(""; CalcFrame) ->

(""; #32770 Dialog), ...另一个子窗口 ->

(""; Button) ,... 另一个子窗口

//(“窗口标题”;窗口类) // -> 下一个子级别

我使用 FindWindowExA() 捕获主窗口并深入了解;

#define wndName "Calculator"
...
    HWND calcHwnd = ::FindWindowA(0, wndName);
    HWND frameHwnd = ::FindWindowExA(calcHwnd, 0, 0, 0);
    HWND contentHwnd = ::FindWindowExA(calcHwnd, 0, "#32770 (Dialog)", 0);
    DWORD er = GetLastError();

我可以多次使用 ::FindWindowExA(calcHwnd, 0, 0, 0) 来获得我需要的 HWND(在那个级别有几个子窗口)。但我想使用我需要的窗口具有类“#32770(对话框)”的条件来获得 HWND。 但是 ::FindWindowExA(calcHwnd, 0, "#32770 (Dialog)", 0) - 返回 NULL。 GetLastError 返回 0。出了什么问题?

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

    #32770 实际上是一个类原子。试试:

    HWND contentHwnd = ::FindWindowExA(calcHwnd, NULL, MAKEINTRESOURCE(32770), NULL);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多