我使用此代码来启动then浏览器,然后终止它。但是,在启动and浏览器并使其成为活动窗口之后,它会在后台捕获窗口(启动浏览器的应用程序)并终止它。所以我想让它在前台( want浏览器)中终止窗口。
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "C:\iexplore.exe";
ShExecInfo.lpParameters = "http://www.google.se";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOWMAXIMIZED;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,10);
DWORD Pid = GetCurrentProcessId();
HANDLE h = OpenProcess(PROCESS_TERMINATE, false, Pid);
TerminateProcess(h, 1);
CloseHandle(h);我猜问题出在GetCurrentProcessId()给我的是正在运行的应用程序的id,而不是新打开的not浏览器。为什么会这样呢?
发布于 2014-04-12 04:50:41
GetCurrentProcessId的整个目的是返回调用函数的进程的PID。
要获得所创建进程的进程句柄,请读取SHELLEXECUTEINFO结构的hProcess成员。也就是说,在这个实例中调用CreateProcess会更好,因为您已经知道要启动的可执行文件。
https://stackoverflow.com/questions/23014204
复制相似问题