Windows 啓動外部程序並隱藏其窗口

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章