我有一个Delphi控制台应用程序,可以通过以下方式从其他应用程序启动:
FillChar(ExecInfo, SizeOf(ExecInfo), 0);
With ExecInfo Do Begin
cbSize := SizeOf(ExecInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOASYNC;
Wnd := GetActiveWindow();
lpVerb := PChar('runas');
lpFile := PChar(FsCurrentPath + 'Install\Install_Elevated.exe');
lpDirectory := PChar(FNew.sBinDir);
lpParameters := PChar(sl.DelimitedText);
nShow := SW_HIDE
End;
ShellExecuteEx(@ExecInfo);
在某些情况下,我想让它显示自己(以SW_SHOWNORMAL状态显示)。我该怎么做?
这种方式不会显示:
ShowWindow(GetConsoleWindow, SW_SHOW);
即使不这样:
BringWindowToTop(GetConsoleWindow);
SetActiveWindow(GetConsoleWindow);
SetForegroundWindow(GetConsoleWindow);
ShowWindow(GetConsoleWindow, SW_SHOW)
但是它以这种方式呈现出来:
MessageBox(GetConsoleWindow, PChar(IntToStr(GetConsoleWindow)), PChar(''), MB_SETFOREGROUND);
ShowWindow(GetConsoleWindow, SW_SHOW);
当然,我不想要这个消息框。
问题是什么?
ShowWindow(GetConsoleWindow, SW_SHOW)
吗? - Sertac AkyuzVcl.Forms
,则TApplication
仅在 DLL 中。实际上,TApplication
是 VCL 特定的。它在 VCL 单元中定义。Firemonkey 也有自己的TApplication
。服务也有它,因为 Delphi 的服务实现在 VCL 中。实际上,服务的TServiceApplication
在Vcl.SvcMgr
中定义。 - Jerry Dodge