【发布时间】:2011-12-12 10:19:08
【问题描述】:
我正在使用 createprocess 执行应用程序,比如记事本。
我需要覆盖该应用程序的默认大小和位置,因此我修改了 STARTUPINFO,并指定了 dwX、dwY、dwYSize、dwXSize 并将 STARTF_USEPOSITION||STARTF_USESIZE 添加到 dwFlags。
但应用程序根本没有打开。
如果我放置 STARTF_USEPOSITION 和 STARTF_USESIZE 之一,应用程序会打开但不会重新定位或调整大小。
有什么办法吗?
{
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
siStartupInfo.dwFlags = STARTF_USEPOSITION|STARTF_USESIZE;//||STARTF_USESHOWWINDOW;
siStartupInfo.wShowWindow=SW_SHOWDEFAULT;
siStartupInfo.dwX=900;
siStartupInfo.dwY=300;
siStartupInfo.dwXSize=1000;
siStartupInfo.dwYSize=1000;
if(CreateProcess("H:\\WINXP\\system32\\notepad.exe", // Application name
NULL , // Application arguments
0,
0,
FALSE,
NORMAL_PRIORITY_CLASS,
0,
0, // Working directory
&siStartupInfo,
&piProcessInfo) )
printf("Sucessful\n");
else
printf("Error");
}
【问题讨论】:
-
您确定您的“STARTF_USEPOSITION||STARTF_USESIZE”有两个条吗?应该是一根吧。除此之外,您可能还需要向我们展示您使用的代码。
-
我的错,我换了运营商。它现在打开,但窗口大小和位置仍然保持不变。
标签: c winapi resize overriding createprocess