您的位置:首页 > 职场人生

WinAPI: GetWindow - 获取与指定窗口具有指定关系的窗口的句柄

2009-09-23 10:31 435 查看
//声明:
GetWindow(
hWnd: HWND; {指定的窗口句柄}
uCmd: UINT  {指定的关系选项}
): HWND;      {失败返回0; 成功返回符合的窗口句柄}
//uCmd 可选值:
GW_HWNDFIRST = 0; {同级别 Z 序最上}
GW_HWNDLAST  = 1; {同级别 Z 序最下}
GW_HWNDNEXT  = 2; {同级别 Z 序之下}
GW_HWNDPREV  = 3; {同级别 Z 序之上}
GW_OWNER     = 4; {属主窗口}
GW_CHILD     = 5; {子窗口中的最上}


枚举当前所有窗口
回复 maxcool 的问题:

{要有个 Memo 接受数据}
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWnd;
p: array[0..254] of char;
begin
h := GetWindow(Handle, GW_HWNDFIRST);
while h <> 0 do
begin
if GetWindowText(h, p, 255) > 0 then Memo1.Lines.Add(p);
h := GetWindow(h, GW_HWNDNEXT);
end;
end;

WinAPI: GetTopWindow - 获取指定窗口的子窗口中最顶层的窗口句柄
//声明:
GetTopWindow(
hWnd: HWND; {指定的窗口句柄}
): HWND;      {失败返回0; 成功返回最顶层的子窗口句柄}

这和用 GetWindow 函数使用 GW_CHILD 参数时应该是一样的, 测试一下:

var
h1,h2: HWND;
begin
h1 := GetTopWindow(GetDesktopWindow);
h2 := GetWindow(GetDesktopWindow, GW_CHILD);
ShowMessage(Format('%d,%d',[h1,h2])); {132540,132540}
end;

WinAPI: GetNextWindow - 获取指定窗口Z上或Z下的窗口的句柄
//声明:
GetNextWindow(
hWnd: HWND; {指定的窗口句柄}
uCmd: UINT  {指定的关系选项}
): HWND;      {失败返回0; 成功返回符合的窗口句柄}
//uCmd 可选值:
GW_HWNDNEXT  = 2; {同级别 Z 序之下}
GW_HWNDPREV  = 3; {同级别 Z 序之上}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 GetWindow