c++ - 在 C++ 中打开特定应用程序后如何关闭它?
问题描述
因此,在我的代码中,我使用 ShellExecute 打开例如记事本,之后我想关闭它,但我找不到任何工作方式,所以我的问题是,使用 c++ 代码关闭特定应用程序的最简单方法是什么?
#include <iostream>
#include <Windows.h>
int main()
{
ShellExecute(NULL, "open", "notepad", NULL, NULL, SW_SHOWDEFAULT);
Sleep(10000);
//here I'm missing the part that closes previously opened notepad
return 0;
}
解决方案
您可以使用ShellExecuteEx
with SEE_MASK_NOCLOSEPROCESS
,然后您可以将其作为参数传递给TerminateProcess
函数。
这是一个示例:
#include <windows.h>
int main()
{
SHELLEXECUTEINFO lpExecInfo{};
lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
lpExecInfo.lpFile = L"notepad.exe";
lpExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
lpExecInfo.hwnd = NULL;
lpExecInfo.lpVerb = NULL;
lpExecInfo.lpParameters = NULL;
lpExecInfo.lpDirectory = NULL;
lpExecInfo.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&lpExecInfo);
Sleep(3000);
if (lpExecInfo.hProcess)
{
TerminateProcess(lpExecInfo.hProcess, 0);
CloseHandle(lpExecInfo.hProcess);
}
return 0;
}
推荐阅读
- github - 将 Github 存储库同步到 Azure 存储库
- sql-server - SELECT SQL 查询执行时间过长
- apache-kafka - 在 bitnami/kafka helm chart 上设置配置参数
- java - 将表单数据从 HTML 导入 java Spring 控制器作为 JSON 请求正文的最佳方法
- javascript - 在 js 中,我如何在另一个水龙头上使用我的待办事项列表?
- payara - Payara 5 JDBC pool:监控显示连接的最大值大于最大池大小
- python - 在 python 中模拟一个常量
- docker - 在 docker 上部署时如何更改 Tomcat 中的基本 URL
- docker - 部署失败'
Dockerfile:Dockerfile' - python-3.x - Django 静态 style.css 样式