比如我想使用ExitProcess(PrcInfo.hProcess)结束该进程,结果却把自己(打开EXE文件的程序)给结束了
我的目的:打开一个exe文件,并对它的窗体进行关闭、鼠标点击等操作,我个人认为这就在此之前得到这个exe文件的窗体句柄,所以才用的CreateProcess而不是shelexecute(),但现在还是不能对它进行操作,谁能教教我,谢谢PS:用findwindow()没有用,窗体名太长了,我试过了,我都不知道是什么
我的目的:打开一个exe文件,并对它的窗体进行关闭、鼠标点击等操作,我个人认为这就在此之前得到这个exe文件的窗体句柄,所以才用的CreateProcess而不是shelexecute(),但现在还是不能对它进行操作,谁能教教我,谢谢PS:用findwindow()没有用,窗体名太长了,我试过了,我都不知道是什么
下面的例程打开和关闭h:\x.exe:
var
information:PROCESS_INFORMATION;
startinf:STARTUPINFO;
procedure open;
begin
createprocess('h:\x.exe',nil,nil,nil,false,NORMAL_PRIORITY_CLASS,
nil,'h:\',startinf,information);
end;procedure close;
begin
terminateprocess(information.hProcess,0);
end;
但使用terminateprocess有一定的危险性,它不会关闭进程打开的dll。如果程序要求不高,可以试试用这种方法。
我已经用CreateProcess创建一个进程了,我的意思是怎么操控这个进程对应的窗体呢?
比击点击窗体某个色素坐标位置
LPCTSTR lpApplicationName, // 可执行模块名
LPTSTR lpCommandLine, // 命令行字符串
LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程的安全属性
LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程的安全属性
BOOL bInheritHandles, // 句柄继承标志
DWORD dwCreationFlags, // 创建标志
LPVOID lpEnvironment, // 指向新的环境块的指针
LPCTSTR lpCurrentDirectory, // 指向当前目录名的指针
LPSTARTUPINFO lpStartupInfo, // 指向启动信息结构的指针
LPPROCESS_INFORMATION lpProcessInformation // 指向进程信息结构的指针
);
使用最后一个参数