我的代码如下:
PROCESS_INFORMATION piAbc;
int fRet=CreateProcess(TEXT("\\windows\\abc.exe"),
                  NULL,
                  NULL,
                  NULL,
                  FALSE,
                  CREATE_NEW_CONSOLE,
                  NULL,
                  NULL,
                  NULL,
&(this->piAbc));
现在我怎么得到Abc的句柄呢?

解决方案 »

  1.   

    typedef struct _PROCESS_INFORMATION {
        HANDLE  hProcess;
        HANDLE  hThread;
        DWORD   dwProcessId;
        DWORD   dwThreadId;
    } PROCESS_INFORMATION, *LPPROCESS_INFORMATION;我要用到MoveWindow()函数,所以需要进程的hWnd是HWND类型的,而这里只见到HANDLE类型呀,没有HWND???
      

  2.   

    PROCESS_INFORMATION processInfo ;
    CreateProcess(...,&processInfo) ;
    WaitForInputIdle(processInfo.hProcess,INFINITE) ;EnumWindows(...) ;找到窗口后再大化窗口.MoveWindow(..) ;
    //////////////////////
    //下面是枚举窗口过程
    BOOL __stdcall EnumWindowProc(HWND hWnd,LPARAM lParam)
    {
        DWORD dwProcessId = NULL ;
        GetWindowThreadProcessId(hWnd,dwProcessId);    //在这里根据processInfo.dwProcessId找到目标窗口。
        if(dwProcessId == processInfo.dwProcessId)
        {
          *lParam = (LPARAM)hWnd ;
          return FALSE;
         }
        return TRUE ;
    }