我正在使用createprocess执行一个应用程序,比如记事本。
我需要覆盖该应用程序的默认大小和位置,因此我修改了STARTUPINFO,并指定了dwX、dwY、dwY size、dwXSize,并将STARTF|u 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");
}
最佳答案
应用程序可以忽略STARTUPINFO
中的所有数据,或者只使用wShowWindow
。
您可以尝试使用WaitForInputIdle
,然后使用FindWindow
然后使用SetWindowPos
。