在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;
}