现在我碰到一个问题:假设已知父窗口的句柄是:2229472,我需要查找父窗口下的子窗口为AfxMDIFrame70su类,没有标题。
但问题就在,父窗口下总共有三个AfxMDIFrame70su类,分别的句柄是:2098426,,,,1180862,,,2098292,,我所需要的是第二个(1180862这个句柄),我用findWindowsEx函数查找,但只能找到第一个(2098426这个句柄),是不是findWindowsEx只能查找符合条件的第一个子窗口啊,那我这个问题怎么解决呢,有办法吗?
但问题就在,父窗口下总共有三个AfxMDIFrame70su类,分别的句柄是:2098426,,,,1180862,,,2098292,,我所需要的是第二个(1180862这个句柄),我用findWindowsEx函数查找,但只能找到第一个(2098426这个句柄),是不是findWindowsEx只能查找符合条件的第一个子窗口啊,那我这个问题怎么解决呢,有办法吗?
var
cName: array[0..180] of Char;
wName: array[0..32] of Char;
tHandle: Longword;
begin
result := true;
GetClassName(hwnd, cName, 32); {类名}
GetWindowText(hwnd, wName, 180); {窗口名}
tHandle := GetWindowLong(hwnd, GWL_STYLE); {判断窗体是否可见}
if (WS_VISIBLE and tHandle) > 1 then
Form1.Memo1.Lines.Append(IntToStr(hwnd)+ Chr(2) + StrPas(cName) + chr(2) + StrPas(wName));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc, 0);
end;
在遍歷中也可找到你要的東西正常用 findWindowsEx 應該是可以的, 你說不行, 有點奇怪
AAA=findWindowsEx(主窗口HWND,0,‘AfxMDIFrame70su’,NIL);
找到第1个AfxMDIFrame70su类的控件句柄,
然后从得到的句柄再找起。
BBB=findWindowsEx(主窗口HWND,AAA,‘AfxMDIFrame70su’,NIL);这个BBB就是第2个的句柄了。看看findWindowsEx的介绍,这100分不就省了么
FindWindowEx的第二个参数把第一次找到的传进去。。
BBB=findWindowsEx(AAA,0,‘AfxMDIFrame70su’,NIL);和DemonLoveLizzy(▲▲▲▲▲) 兄说的还是有些差异哦。给分!