Delphi 程序被隐藏在调用它的程序后面

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

使用Winapi.Windows单元中的CreateProcess函数,我打开了另一个可执行文件,但当它打开时,它不会显示在调用它的可执行文件的顶部

以下是我整理的程序:

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)后,我注意到了这一点,如果我找到了原因,我会提供更多信息,再次感谢:)如果你不想理解这一点,那么你应该删除整个帖子。