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 创建进程并获取句柄_Delphi_Winapi_Delphi 2010 - Fatal编程技术网

Delphi 创建进程并获取句柄

Delphi 创建进程并获取句柄,delphi,winapi,delphi-2010,Delphi,Winapi,Delphi 2010,我正在使用CreateProcess API将RealVNC与我的exe集成。。。我只需要处理创建的vnc客户机的句柄,但到目前为止还没有成功。代码非常简单: procedure TForm1.VncAuth; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: string; title: string; ProcHandle: THandle; begin FillChar(Star

我正在使用CreateProcess API将RealVNC与我的exe集成。。。我只需要处理创建的vnc客户机的句柄,但到目前为止还没有成功。代码非常简单:

procedure TForm1.VncAuth;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
  title: string;
  ProcHandle: THandle;
begin
  FillChar(StartInfo,SizeOf(TStartupInfo),#0);
  FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
  StartInfo.cb := SizeOf(TStartupInfo);
  CmdLine:= 'vnc.exe';
  UniqueString(CmdLine);
  CreateProcess(NIL ,PChar(CmdLine), NIL, NIL, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS
                                  , NIL, NIL, StartInfo, ProcInfo);
  ProcHandle:= ProcInfo.hProcess;
  GetWindowText(ProcHandle, PChar(title), 255);
  ShowMessage(title);
end;
标题变量中未返回任何内容。。。GetWindowText函数只是一个测试,看看我是否有正确的句柄,如果有,我应该看到vnc客户端标题的正确性?
谢谢大家!

窗口句柄和进程句柄不是一回事。对于
GetWindowText
,您需要一个窗口句柄

  • 创建流程后,调用WaitForInputdle以允许流程启动并创建其主窗口
  • 调用
    EnumWindows
    枚举顶级窗口
  • 对于每个顶级窗口,调用
    GetWindowThreadProcessId
    以查找创建该窗口的进程的进程ID。您创建的进程的进程ID是
    ProcInfo.dwProcessId
  • 当您找到一个进程ID与您刚才创建的进程ID匹配的窗口时,该窗口就是您的人
    窗口句柄和进程句柄不是一回事。对于
    GetWindowText
    ,您需要一个窗口句柄

  • 创建流程后,调用WaitForInputdle以允许流程启动并创建其主窗口
  • 调用
    EnumWindows
    枚举顶级窗口
  • 对于每个顶级窗口,调用
    GetWindowThreadProcessId
    以查找创建该窗口的进程的进程ID。您创建的进程的进程ID是
    ProcInfo.dwProcessId
  • 当您找到一个进程ID与您刚才创建的进程ID匹配的窗口时,该窗口就是您的人
    ProcInfo.hProcess
    是一个进程句柄
    GetWindowText
    需要一个窗口句柄。它们根本不是一回事,就像门把手是刀柄一样。
    ProcInfo.hProcess
    是一个过程把手
    GetWindowText
    需要一个窗口句柄。它们根本不是一回事,就像门把手是刀柄一样。您可能需要包含类名或可见性等。。测试到第4步,因为多个进程会创建多个顶级窗口。您可能需要包括类名或可见性等。。测试到第4步,因为多个进程会创建多个顶级窗口。