Windows 启动外部程序并隐藏其窗口
程序员文章站
2022-05-12 21:30:28
...
在Windows中,要启动外部程序有几种方式:ShellExecuteEx,CreateProcess。
下面我们用CreateProcess来创建一个进程,并隐藏新进程的窗口。
#include "stdafx.h"
#include <windows.h>
#include <process.h>
#include <assert.h>
int _tmain(int argc, _TCHAR* argv[])
{
//HDESK hDesk = CreateDesktop(_T("MyDesk"), NULL, NULL, 0, GENERIC_ALL, NULL);
//assert(hDesk);
STARTUPINFO si = {sizeof(si)};
si.lpDesktop = _T("MyDesk");//不需要CreateDesktop,只要不为空就行
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
//si.lpTitle = NULL;
//si.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION pi = {0};
DWORD dwExitCode = 0;
TCHAR szExePath[MAX_PATH] = {_T("C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe")};
if(CreateProcess(NULL, szExePath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
CloseHandle(pi.hThread);
//CloseHandle(pi.hProcess);
//等待进程结束
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, &dwExitCode);
CloseHandle(pi.hProcess);
char szbuff[0x100] = { 0 };
sprintf_s(szbuff, "the process exit. hProcess: %d, processId: %d, dwExitCode: %d\n",
pi.hProcess, pi.dwProcessId, dwExitCode);
printf(szbuff);
}
return 0;
}
推荐阅读