获取指定关系窗口句柄及枚举窗口句柄

 时间:2026-02-16 10:56:08

1、WinAPI: GetWindow - 获取与指定窗口具有指定关系的窗口的句柄//声明:GetWindow(  hWnd: HWND; {指定的窗口句柄}  uCmd: UINT  {指定的关系选项}): HWND;      {失败返回0; 成功返回符合的窗口句柄}

//uCmd 可选值:GW_HWNDFIRST = 0; {同级别第一个}GW_HWNDLAST  = 1; {同级别最后一个}GW_HWNDNEXT  = 2; {同级别下一个}GW_HWNDPREV  = 3; {同级别上一个}GW_OWNER     = 4; {属主窗口}GW_CHILD     = 5; {子窗口}

--------------------------------------------------------------------------------

{要有个 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;

//-------------------------- 递归的过程procedure GetChildWindows(h: HWND);var  buf: array[0..255] of Char;  {这个缓冲区是获取类名用的, 如果不需要可以删除}begin  h := GetWindow(h, GW_CHILD); {第一个子窗口}  while h <> 0 do  begin    {下面两行是要执行的操作, 并假定只处理 TEdit}    GetClassName(h, buf, Length(buf));    if buf = 'TEdit' then ShowMessageFmt('%s:%d', [buf, h]);

    h := GetWindow(h, GW_HWNDNEXT); {下一个子窗口}    GetChildWindows(h);             {递归}  end;end;

//-------------------------- 调用的方法

procedure TForm1.Button1Click(Sender: TObject);begin  GetChildWindows(Handle);end;

  • 易语言近似等于实例讲解
  • Ubuntu18.04安装mysql数据库详细步骤
  • win10如何给电脑配置IPV6的地址?
  • 表格制作软件FineReport中如何设置报表块样式
  • 镜像站群能做吗?真正实现霸屏的站群
  • 热门搜索
    拗九节手抄报 少先队知识手抄报 手抄报花边简笔画 文明城市手抄报内容 防控疫情的手抄报 重阳节手抄报内容大全 元旦节的手抄报 抗击病毒手抄报内容 科普手抄报内容 元旦手抄报图片大全