Delphi 创建进程并获取句柄
我正在使用CreateProcess API将RealVNC与我的exe集成。。。我只需要处理创建的vnc客户机的句柄,但到目前为止还没有成功。代码非常简单: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
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
,您需要一个窗口句柄
EnumWindows
枚举顶级窗口GetWindowThreadProcessId
以查找创建该窗口的进程的进程ID。您创建的进程的进程ID是ProcInfo.dwProcessId
窗口句柄和进程句柄不是一回事。对于
GetWindowText
,您需要一个窗口句柄
EnumWindows
枚举顶级窗口GetWindowThreadProcessId
以查找创建该窗口的进程的进程ID。您创建的进程的进程ID是ProcInfo.dwProcessId
ProcInfo.hProcess
是一个进程句柄GetWindowText
需要一个窗口句柄。它们根本不是一回事,就像门把手是刀柄一样。ProcInfo.hProcess
是一个过程把手GetWindowText
需要一个窗口句柄。它们根本不是一回事,就像门把手是刀柄一样。您可能需要包含类名或可见性等。。测试到第4步,因为多个进程会创建多个顶级窗口。您可能需要包括类名或可见性等。。测试到第4步,因为多个进程会创建多个顶级窗口。