gpt4 book ai didi

c++ - 如何将窗口置于通过 CreateProcess 创建的进程之上

转载 作者:可可西里 更新时间:2023-11-01 13:29:29 26 4
gpt4 key购买 nike

我正在使用 CreateProcess API 从我的应用程序启动一个进程,我想将新进程的窗口置于顶部。有办法吗? CreateProcess 是否有任何标志或类似的东西?

最佳答案

你可以尝试使用STARTUPINFO使用 CreateProcess 传入并设置 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;
}

当调用 EnumWindows() 时,您需要像这样传入您之前获取的 PID 作为 lParam:

EnumWindows( EnumWindowsProc, ( LPARAM )( PI -> dwProcessId ) );

关于c++ - 如何将窗口置于通过 CreateProcess 创建的进程之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com