ShellExecute 静默运行
时间: 2023-12-31 21:06:38 浏览: 49
可以使用 ShellExecute 函数的参数来实现静默运行:
```cpp
ShellExecute(NULL, "open", "your_program.exe", NULL, NULL, SW_HIDE);
```
其中,第 6 个参数 SW_HIDE 就是让程序在后台运行,不显示窗口,从而实现静默运行。
相关问题
python shellExecute 静默运行
在 Python 中,可以使用 `subprocess` 模块来实现静默运行。具体的实现方式如下:
```python
import subprocess
# 执行命令,将标准输出和错误输出都重定向到空设备文件中
subprocess.call(["your_program.exe"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True)
```
在上面的代码中,我们使用 `subprocess.call()` 函数来执行命令。`stdout` 和 `stderr` 参数都被设置为 `subprocess.DEVNULL`,表示将标准输出和错误输出都重定向到空设备文件中,从而实现静默运行。`shell` 参数被设置为 `True`,表示使用系统的默认 shell 来执行命令。
ShellExecute 如何知道脚本运行完成
ShellExecute 函数本身并不会等待脚本执行完成,它只是启动一个进程并立即返回。如果你需要等待脚本执行完成,可以使用 CreateProcess 函数启动进程,然后使用 WaitForSingleObject 等待进程结束。具体步骤如下:
1. 使用 CreateProcess 函数创建进程,设置 bInheritHandles 参数为 TRUE,以便可以继承父进程的标准输出和错误输出句柄。
2. 使用 GetExitCodeProcess 函数获取进程的退出代码。如果进程还在运行,GetExitCodeProcess 函数将返回 STILL_ACTIVE。
3. 如果进程已经退出,使用 CloseHandle 函数关闭进程句柄。
4. 如果进程还在运行,使用 WaitForSingleObject 函数等待进程结束。等待结束后,使用 GetExitCodeProcess 函数获取进程的退出代码,并使用 CloseHandle 函数关闭进程句柄。
以下是示例代码:
```
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
if (CreateProcess(NULL, "script.bat", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
{
WaitForSingleObject(pi.hProcess, INFINITE);
DWORD exitCode;
if (GetExitCodeProcess(pi.hProcess, &exitCode))
{
if (exitCode == STILL_ACTIVE)
{
// 进程还在运行
}
else
{
// 进程已经退出,可以关闭进程句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
}
}
```
注意,在等待进程结束时,可以使用 INFINITE 参数表示等待无限长的时间,也可以使用一个超时时间,以便在一定时间内检查进程是否已经结束。