是否调整使用createprocess创建的应用程序的大小并重新定位?

是否调整使用createprocess创建的应用程序的大小并重新定位?,c,winapi,resize,overriding,createprocess,C,Winapi,Resize,Overriding,Createprocess,我正在使用createprocess执行一个应用程序,比如记事本 我需要覆盖该应用程序的默认大小和位置,因此我修改了STARTUPINFO,指定了dwX、dwY、dwYSize、dwXSize,并将STARTF_USEPOSITION | STARTF_USESIZE添加到了dwFlags 但应用程序根本没有打开。 如果我放置STARTF_USEPOSITION和STARTF_USESIZE中的一个,应用程序将打开,但不会重新定位或调整大小 有没有办法做到这一点 { STARTUPINFO

我正在使用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");
}

应用程序可以忽略
STARTUPINFO
中的所有数据,或者只使用
wShowWindow


您可以尝试使用
WaitForInputIdle
,然后使用
FindWindow
,然后使用
SetWindowPos
,记事本似乎没有使用
GetStartupInfo()
读取创建时传入的
STARTUPINFO
。我过去曾做过一件事,就是将有效的
PROCESS\u信息
传递给
CreateProcess


由此,您将能够得到创建的进程的PID。然后,您可以使用
EnumWindows
GetWindowThreadProcessId
进行轮询,直到找到该窗口。这比FindWindow更准确,FindWindow可能与记事本的其他实例相匹配。

您确定有带两个条的“STARTF_USEPOSITION | STARTF_USESIZE”吗?应该是一个吧。除此之外,您可能还需要向我们展示您使用的代码。糟糕,我已经更改了运算符。它现在打开了,但窗口大小和位置仍然保持不变。我一直到设置WindowPos,但它也没有相应地重新绘制记事本,记事本在其默认位置和大小打开,但在指定的位置创建了一个小框架。我不确定应该使用什么uFlags。SetWindowPos失败,返回0。@HariHaraSudhan,它还返回一个错误,检查
GetLastError
,它的1400,被认为是无效的窗口句柄错误。如果可能的话,你能为我写的程序提供剩下的代码,包括WaitForInputIdle、FindWindow和SetWindowPos。@HariHaraSudhan,不,不可能。