启动过程并始终设置过程HWND尺寸

时间:2016-07-15 04:18:25

标签: c winapi

我正在启动另一个应用程序并设置其主要HWND位置和大小。我使用STARTUPINFO标记来指定窗口维度,但如果新流程在其CW_USEDEFAULT函数中使用CreateWindow(),则看起来只会遵循这些维度。

STARTUPINFO中是否有标记/设置始终设置新进程HWND尺寸?我知道另一个解决方案是找到进程主HWND和SetWindowPos()但是这涉及枚举所有窗口以找到正确的一个,一些应用程序需要一段时间才能启动,所以当我调用{{1}时窗口是活着的}

EnumWindows()

1 个答案:

答案 0 :(得分:3)

  

STARTUPINFO中是否有一个标志/设置,总是设置新进程HWND尺寸?

没有。衍生过程完全控制其UI。它选择是否使用默认值。您在WakefulIntentService中指定的内容仅为默认值。

  

我知道找到进程主HWND和SetWindowPos()

的另一个解决方案

如果你想强制尺寸,是的。

  

涉及枚举所有窗口以找到正确的窗口并且某些应用程序需要一段时间才能启动,因此在我调用EnumWindows()

时窗口是活动的

首先尝试拨打WaitForInputIdle()caveat #1caveat #2)。

或者,使用SetWinEventHook()监控窗口创建,直到看到您感兴趣的窗口为止。

相关:How to determine when spawned process is ready? (Using CreateProcess() and FindWindow())