Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何枚举另一个进程';Delphi中的windows?_Windows_Delphi_Winapi - Fatal编程技术网

如何枚举另一个进程';Delphi中的windows?

如何枚举另一个进程';Delphi中的windows?,windows,delphi,winapi,Windows,Delphi,Winapi,我有一个进程foo.exe,它使用CreateProcess函数创建一个进程bar.exe。我想(在foo.exe中)枚举在bar.exe中创建的窗口的控件,为此我(假设我)需要窗口HWND 我知道bar.exe中的所有窗口类,并且bar.exe一次只为每个类创建一个窗口,因此我可以使用类名来查找所需的窗口 但是我应该使用什么函数来枚举另一个进程中的窗口呢?我正在寻找一个进程句柄或PID(都由CreateProcess函数返回)和EnumProc回调过程。我应该找到bar.exe的线程ID(它是

我有一个进程
foo.exe
,它使用
CreateProcess
函数创建一个进程
bar.exe
。我想(在
foo.exe
中)枚举在
bar.exe
中创建的窗口的控件,为此我(假设我)需要窗口HWND

我知道
bar.exe
中的所有窗口类,并且
bar.exe
一次只为每个类创建一个窗口,因此我可以使用类名来查找所需的窗口

但是我应该使用什么函数来枚举另一个进程中的窗口呢?我正在寻找一个进程句柄或PID(都由
CreateProcess
函数返回)和
EnumProc
回调过程。我应该找到
bar.exe
的线程ID(它是一个单线程应用程序)并将其与
EnumThreadWindows
函数一起使用吗

  • 调用
    EnumWindows
    枚举顶级窗口
  • 将每个顶级窗口句柄传递给
    GetWindowThreadProcessId
    ,以找出它与哪个进程ID关联
  • 当您找到与流程ID匹配的顶级窗口时,请检查该窗口是否为应用程序的主窗口,可能是通过检查其类名
  • 最后,在该主窗口上调用
    EnumChildWindows
    ,以枚举该主窗口的所有子窗口