資源簡介
關(guān)鍵實(shí)現(xiàn)代碼。不是完整的demo。主要利用CreateEvent、StartProcess、MoveWindow等函數(shù)。
代碼片段和文件信息
static?HANDLE?g_hEvent=NULL; //event?handle
static?HANDLE?handle;//process?handle
static?HWND?apphwnd;//window?handle
/*************Global?functions?for?hosting******************/
//Function?to?enumerate?all?windows.
int?CALLBACK?EnumWindowsProc(HWND?hwnd?LPARAM?param)
{
DWORD?pID;
DWORD?TpID?=?GetWindowThreadProcessId(hwnd?&pID);//get?process?id
if?(TpID?==?(DWORD)param)
{
apphwnd=hwnd;//hwnd?is?the?window?handle
SetEvent(g_hEvent);
return?false;
}
ResetEvent(g_hEvent);
return?true;
}
//Functio?to?start?a?orocess?and?return?the?process?handle
HANDLE?StartProcess(LPCTSTR?program?LPCTSTR?args)
{
HANDLE?hProcess?=?NULL;
PROCESS_INFORMATION?processInfo;
STARTUPINFO?startupInfo;
::ZeroMemory(&startupInfo?sizeof(startupInfo));
startupInfo.cb?=?sizeof(startupInfo);
startupInfo.dwFlags=STARTF_USESHOWWINDOW;
startupInfo.wShowWindow=SW_HIDE;
if(::CreateProcess(program?(LPTSTR)args?
NULL??//?process?security
NULL??//?thread?security
FALSE?//?no?inheritance
0?????//?no?startup?flags
NULL??//?no?special?environment
NULL??//?default?startup?directory
&startupInfo
&processInfo))
{?/*?success?*/
WaitForInputIdle(processInfo.hProcess-1);
::EnumWindows(&EnumWindowsProc?processInfo.dwThreadId);//Ite
評論
共有 條評論