首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >启动流程并始终设置流程HWND维度

启动流程并始终设置流程HWND维度
EN

Stack Overflow用户
提问于 2016-07-15 12:18:25
回答 1查看 104关注 0票数 0

我正在启动另一个应用程序并设置它的主要HWND位置和大小。我使用STARTUPINFO标志来指定窗口尺寸,但是看起来只有当新进程在其CreateWindow()函数中使用CW_USEDEFAULT时,才会遵循这些尺寸。

STARTUPINFO中是否有一个标志/设置可以始终设置新流程的HWND维度?

代码语言:javascript
运行
复制
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

si.dwX = x;
si.dwY = y;
si.dwXSize = w;
si.dwYSize = h;

// any flags I can set to give the STARTUPINFO dimensions priority?
si.dwFlags = ??

CreateProcess(_T("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"), _T(""),
NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL,
NULL, &si, &pi);
EN

回答 1

Stack Overflow用户

发布于 2016-07-15 12:31:42

在STARTUPINFO中是否有一个标志/设置将始终设置新工艺的HWND尺寸?

不是的。衍生的进程可以完全控制其UI。它选择是否使用默认值。您在STARTUPINFO中指定的内容仅为默认值。

我知道另一个解决方案,那就是找到进程main HWND

SetWindowPos()

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

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

尝试先调用WaitForInputIdle() (caveat #1caveat #2)。

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38387798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档