delphi FindWindow如何才可以获取窗体中所有控件的句柄

来源:互联网  时间:2016/8/24 14:04:28

关于网友提出的“ delphi FindWindow如何才可以获取窗体中所有控件的句柄”问题疑问,本网通过在网上对“ delphi FindWindow如何才可以获取窗体中所有控件的句柄”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: delphi FindWindow如何才可以获取窗体中所有控件的句柄
描述:

我有一个应用程序他在进程中的名称为:main.exe
我通过API的函数取得了 main.exe的句柄
main.exe的窗体中有好多个控件。现在的问题是我如何才可以通过一个类似循环的方式来
取得所有控件的句柄。如果不使用循环的方式FindWindowEx只能找到第一个控件的句柄。
我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessName:string;//进程名
FSnapshotHandle:THandle;//进程快照句柄
FProcessEntry32:TProcessEntry32;//进程入口的结构体信息
ContinueLoop:BOOL;
myHwnd:THandle;
myHwnd2:THandle;
hd:THandle;
arr: array[0..255] of Char;
Buf: array[0..1024] of Char;
begin
    FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
    ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
    while   ContinueLoop do
    begin
        ProcessName:=FProcessEntry32.szExeFile;
        if(ProcessName='Main.exe') then
        begin
            myHwnd:=GetHWndByPID(FProcessEntry32.th32ProcessID);  //应用程序句柄
        end;
        ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
    end;
    CloseHandle(FSnapshotHandle);//释放快照句柄
     myHwnd2:=FindWindowEx(myHwnd,0,nil,nil); //查找应用程序中的控件句柄
     SendMessage(myHwnd2,WM_GETTEXT,255,Longint(@arr)); //取得控件标题
     GetClassName(myHwnd2,Buf, 1024); // 得到类名
     Label4.Caption:=IntTostr(myHwnd2)+arr+Buf;
     //这样只是得到了第一个控件的值和类名,可是我怎麽才能行到第二个,第三个.....第N个控件的句柄呢
end; 

上一篇谁能将这个十几行的delphi7程序改为vb6
下一篇delphi 目录 末尾 添加 \ 是哪个函数着,
明星图片
相关文章
《 delphi FindWindow如何才可以获取窗体中所有控件的句柄》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)