Rah*_*hul 5 c++ windows createprocess
我正在使用CreateProcess API从我的应用程序启动一个进程,我希望将新进程的窗口置于顶部.有办法吗?我们在CreateProcess中有任何标志或类似的东西吗?
您可以尝试使用通过CreateProcess传递的STARTUPINFO结构并设置SW_SHOW.我不确定这会有助于将重点放在首位.如果这不起作用,请尝试以下方法.
首先,不要使用FindWindow(),它不必要地不可靠,因为它只能通过窗口名称和类名来工作.相反,您应该从CreateProcess()调用中读取lpProcessInformation并获取dwProcessId.然后调用EnumWindows()并让你的回调看起来像这样:
BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam ) {
DWORD dwPID;
GetWindowThreadProcessId( hwnd, &dwPID );
if( dwPID == lParam ) {
SetWindowPos( hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
// Or just SetFocus( hwnd );
return FALSE;
}
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
调用EnumWindows()时,你需要传递你之前抓取的PID作为lParam,如下所示:
EnumWindows( EnumWindowsProc, ( LPARAM )( PI -> dwProcessId ) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4559 次 |
| 最近记录: |