我在利用CreateProcess()打开一个应用程序(比如说AVI.EXE)时,想指定AVI.EXE启动后显示窗口的位置。我对 LPSTARTUPINFO 这个参数下的dwX  dwY  dwXSize dwYSize四个成员的设置都没有效果(我已经设置了dwFlags )不知道有没有大虾了解这个情况。是不是个还和AVI.exe这个程序有关呢?

解决方案 »

  1.   

    you should get the main hwnd of the run process,then call SetWindowPos.
      

  2.   

    shellexecute就返回一个句柄,用这个句柄再SetWindowPos
      

  3.   

    参考
    http://vip.6to23.com/NowCan1/tech/PID2HWND.htm
      

  4.   

    你用CreateProcess后能得到一个进程ID,再通过http://vip.6to23.com/NowCan1/tech/PID2HWND.htm里的方法得到对应进程ID窗口HWND,
    CWnd *p = FromHandle(hwnd);
    然后再p->SetWindowPos();
      

  5.   

    To laiyilinghttp://vip.6to23.com/NowCan1/tech/PID2HWND.htm 中的这样一句编译出错
    EnumWindows(YourEnumProc, (LPARAM)&wi); 错误是
     E2034 Cannot convert 'int (__stdcall *)(void *,long)' to 'int (__stdcall *)()'
     E2342 Type mismatch in parameter 'lpEnumFunc' (wanted 'int (__stdcall *)()', got 'int (__stdcall *)(void *,long)')还请大虾指教!!