利用C++运行Pyinstaller打包的exe文件,检测该exe是否运行完毕,调用的过程该exe文件需要静默运行。
时间: 2024-01-16 18:04:53 浏览: 83
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
可以使用C++中的`CreateProcess`函数来运行Pyinstaller打包的exe文件,并且使用`WaitForSingleObject`函数来检测该exe是否运行完毕。
以下是一个基本的示例代码:
```c++
#include <windows.h>
#include <iostream>
int main() {
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// 配置启动信息,将dwFlags设置为STARTF_USESHOWWINDOW,将wShowWindow设置为SW_HIDE,即可静默运行exe文件
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
// 启动exe文件
if (!CreateProcess("your_exe_file.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
std::cout << "Error: Failed to start your_exe_file.exe" << std::endl;
return 1;
}
// 等待exe文件运行完毕
WaitForSingleObject(pi.hProcess, INFINITE);
std::cout << "Your_exe_file.exe has finished running." << std::endl;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
需要注意的是,如果`CreateProcess`函数返回FALSE,则表示启动exe文件失败。另外,在使用`WaitForSingleObject`函数时,第一个参数应该传递进程句柄`pi.hProcess`,第二个参数传递INFINITE表示无限等待,直到该进程运行完毕。最后,需要使用`CloseHandle`函数关闭进程句柄和线程句柄,以避免资源泄漏。
阅读全文