找出窗口是否有子窗口

Cas*_*ady 1 delphi winapi delphi-7

我使用以下代码获得了一个窗口句柄:

var h: THandle;
...
h := FindWindow('MozillaWindowClass', NIL);
Run Code Online (Sandbox Code Playgroud)

h有效(> 0).

如何确定此窗口是否有任何子窗口?

我不能使用FindWindowEx(),因为它需要一个类名.

我想在这里完成的是找出MozillaWindowClass窗口是属于Thunderbird还是Firefox.看起来Thunderbird有一个没有孩子的MozillaWindowClass,但Firefox没有,所以这将是一个快速找到的方法.(我不能使用CreateToolhelp32Snapshot()来查看进程名称,因为我的代码也需要在Windows 2000上运行).

Dav*_*nan 6

确定窗口是否有子节点的最简单方法是调用GetWindow传递GW_CHILD.

function HasChildren(Window: HWND): Boolean;
begin
  Result := GetWindow(Window, GW_CHILD)<>0;
end;
Run Code Online (Sandbox Code Playgroud)