Delphi 程序被隐藏在调用它的程序后面
使用Winapi.Windows单元中的CreateProcess函数,我打开了另一个可执行文件,但当它打开时,它不会显示在调用它的可执行文件的顶部 以下是我整理的程序:Delphi 程序被隐藏在调用它的程序后面,delphi,delphi-10.1-berlin,Delphi,Delphi 10.1 Berlin,使用Winapi.Windows单元中的CreateProcess函数,我打开了另一个可执行文件,但当它打开时,它不会显示在调用它的可执行文件的顶部 以下是我整理的程序: procedure Tfrm1.ExecuteProg(Cmdl: String; Pause: Boolean); var SI : TStartUpInfo; PI: TProcessInformation; begin FillChar(SI, Sizeof(SI), 0); with SI do beg
procedure Tfrm1.ExecuteProg(Cmdl: String; Pause: Boolean);
var SI : TStartUpInfo;
PI: TProcessInformation;
begin
FillChar(SI, Sizeof(SI), 0);
with SI do
begin
cb := SizeOf(TStartUpInfo);
dwFlags := StartF_UseShowWindow;
wShowwindow := SW_SHOWNORMAL;
end;
if (CreateProcess(nil, PChar(Cmdl), nil, nil, False, 0, nil, nil, SI, PI)) then
if Pause then WaitForInputIdle(PI.hProcess, INFINITE);
end;
还有什么我需要做的吗
任何帮助都会很好,谢谢。调用上述过程后,我执行了以下操作:
WinHandle := FindWindow(nil, WindowName);
if WinHandle <> null
then SetForegroundWindow(WinHandle);
WinHandle:=FindWindow(nil,WindowName);
如果WinHandle为空
然后设置foregroundindow(WinHandle);
请提供一份详细的信息。你所描述的行为不能被简单地复制。不应该被需要。正如我上面所说,你描述的行为不能用一个简单的空应用程序复制。很明显,在你的场景中发生了一些我们看不到的事情。如果你按照我说的做,然后提出一个问题,那么这将是一个可行的问题。嗨,David,谢谢你的输入,因为现在这将是一个临时修复,我正在处理的项目中有很多代码,需要时间逐步尝试并确定问题,它最初是在XE3中完成的,而这个问题当时从未发生过,在更新项目并转换到更高版本(10.1 berlin)后,我注意到了这一点,如果我找到了原因,我会提供更多信息,再次感谢:)如果你不想理解这一点,那么你应该删除整个帖子。