无法为非控制台应用程序隐藏控制台类型屏幕

时间:2014-06-10 21:08:14

标签: delphi

我有一个小的Delphi XE5程序,其唯一目的是执行另一个Windows程序。该程序通过Windows终端仿真器的调用启动。我们正在尝试使用服务器上的DLL在服务器上执行程序。因此,将当前目录设置为包含DLL的服务器上的目录非常重要。终端仿真程序不允许设置当前目录。因此需要这个程序。

程序正常运行并解决了我们当前的目录"问题,除了我们得到一个控制台屏幕,当程序启动时,屏幕会短暂出现在屏幕上。由于它不是控制台应用程序,我无法理解为什么会出现此控制台类型屏幕。任何人都可以告诉我如何摆脱这个并让程序执行而不显示自己吗?

以下是代码:

    program DoProg;

uses
   SysUtils, ShellAPI, Windows;

const
   ExeAreaDir = '\\public\dd3\Release';
   ExeArea = ExeAreaDir + '\';

procedure RunProg(Path, Param: String);
var
   SEInfo: TShellExecuteInfo;
begin
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
   begin
   fMask := SEE_MASK_NOCLOSEPROCESS;
   Wnd := 0;
   lpFile := Pchar(Path);
   lpParameters := Pchar(Param);
   lpDirectory := Pchar(ExtractFilePath(Path));
   nShow := SW_SHOWNORMAL;
   end;
ShellExecuteEx(@SEInfo);
end;

begin
SetCurrentDir(ExeAreaDir);
RunProg(ExeArea + ParamStr(1), ParamStr(2));

end.

1 个答案:

答案 0 :(得分:5)

您可能在链接器选项中选中了“生成控制台应用程序”。