riv*_*raz 2 c++ shellexecute terminate visual-studio-2010
我正在尝试使用TerminateProcess来终止ShellExecuteEX启动的应用程序,如下所示:
SHELLEXECUTEINFO ExecuteInfo;
ExecuteInfo.fMask = SEE_MASK_FLAG_NO_UI; /* Odd but true */
ExecuteInfo.hwnd = NULL;
ExecuteInfo.cbSize = sizeof(ExecuteInfo);
ExecuteInfo.lpVerb = NULL;
ExecuteInfo.lpFile = "http://www.microsoft.com";
ExecuteInfo.lpParameters = "";
ExecuteInfo.lpDirectory = NULL;
ExecuteInfo.nShow = SW_SHOW;;
ShellExecuteEx(&ExecuteInfo);
//WaitForSingleObject(ExecuteInfo.hProcess, 0);
Sleep(4000);
TerminateProcess(ExecuteInfo.hProcess, 0);
Run Code Online (Sandbox Code Playgroud)
IE被打开但它永远不会关闭.难道我做错了什么?
根据MSDN,fMask必须设置为SEE_MASK_NOCLOSEPROCESSfor .hProcessget set.我会添加一个测试,看看它是否为NULL.作为旁注,我总是运气好CreateProcess.
编辑:
这是使用CreateProcess执行此操作的方法:
PROCESS_INFORMATION pi = {0};
STARTUPINFO si = {0};
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
CreateProcess( NULL,
"C:\\Program Files\\Internet Explorer\\iexplore.exe http://www.google.com/",
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi );
Sleep(4000);
TerminateProcess(pi.hProcess, 0);
Run Code Online (Sandbox Code Playgroud)
您应该添加错误检查,并可以使用以下方法查询默认浏览器的路径:AssocQueryString如下所示:
AssocQueryString(0,ASSOCSTR_EXECUTABLE,"http","open", szExe, &cchExe);
| 归档时间: |
|
| 查看次数: |
1915 次 |
| 最近记录: |