MFC CreateProcess创建可控制窗口的进程

typedef   struct   tagWNDINFO
02. {
03.     DWORD  dwProcessId;//进程ID
04.     HWND   hWnd;//所在窗口
05. }WNDINFO,   *LPWNDINFO;//窗口信息
06. STARTUPINFO StartInfo;//启动信息
07. memset(&StartInfo,0,sizeof(STARTUPINFO));
08. StartInfo.cb = sizeof(STARTUPINFO);//设定结构的大小
09. PROCESS_INFORMATION pinfo;
10. BOOL bRet=CreateProcess(//创建进程
11.                         NULL, //启动程序路径名
12.                         "notepad.exe", //参数(当exeName为NULL时,可将命令放入参数前)
13.                         NULL,  //使用默认进程安全属性
14.                         NULL,  //使用默认线程安全属性
15.                         FALSE,//句柄不继承
16.                         NORMAL_PRIORITY_CLASS, //使用正常优先级
17.                         NULL,  //使用父进程的环境变量
18.                         NULL,  //指定工作目录
19.                         &StartInfo, //子进程主窗口如何显示
20.                         &pinfo); //用于存放新进程的返回信息
21. if(bRet==FALSE)
22. {
23.     AfxMessageBox("创建进程失败");
24. }
25. else
26. {
27.     WaitForInputIdle(pinfo.hProcess,INFINITE);//一直等到程序初始化完(空闲时)返回
28.     CloseHandle(pinfo.hThread);
29.     CloseHandle(pinfo.hProcess);
30. }
31.   
32. //
33. BOOL  CALLBACK EnumThreadWndProc(HWND hwnd,LPARAM lParam) //枚举线程
34. {
35.     SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,
36.         SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);//所有属于该线程的窗口提前,窗口可能多个
37.     return TRUE;
38. }
39. EnumThreadclass=keylink href="http://www.it165.net/os/oswin/" target=_blank>Windows(pinfo.dwThreadId,EnumThreadWndProc,0);//www.it165.net枚举所有线程窗口
40. //
41. BOOL  CALLBACK EnumProcessWndProc(HWND hwnd,LPARAM lParam)//枚举进程
42. {
43.     DWORD   dwProcessId;
44.     GetWindowThreadProcessId(hwnd,&dwProcessId);
45.     LPWNDINFO pInfo=(LPWNDINFO)lParam;
46.     if(dwProcessId==pInfo->dwProcessId)
47.     {
48.         pInfo->hWnd=hwnd;
49.         return  FALSE; 
50.     } //中止枚举 
51.     return TRUE;
52. }
53. WNDINFO   wi;
54. wi.dwProcessId   =   pinfo.dwProcessId;
55. wi.hWnd   =   NULL;
56. Enumclass=keylink href="http://www.it165.net/os/oswin/" target=_blank>Windows(EnumProcessWndProc,(LPARAM)&wi);//枚举进程


你可能感兴趣的:(MFC CreateProcess创建可控制窗口的进程)