gpt4 book ai didi

c++ - TerminateProcess() 不会关闭应用程序

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:49 24 4
gpt4 key购买 nike

我正在尝试使用 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);

IE 打开但永远不会关闭。我做错了什么吗?

最佳答案

根据 MSDN , fMask 必须设置为 SEE_MASK_NOCLOSEPROCESS 才能设置 .hProcess。我会添加一个测试来查看它是否为 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);

您应该添加错误检查并可以使用以下方式查询默认浏览器的路径:AssocQueryString像这样:AssocQueryString(0,ASSOCSTR_EXECUTABLE,"http","open", szExe, &cchExe);

关于c++ - TerminateProcess() 不会关闭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6064935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com