【问题标题】:Can't hide console type screen for non-console application无法隐藏非控制台应用程序的控制台类型屏幕
【发布时间】:2014-06-10 21:08:14
【问题描述】:

我有一个小的 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.

【问题讨论】:

  • 链接器选项中没有“生成控制台应用程序”,是吗?
  • CreateProcess 是更好的选择。至于问题,好像一路上的某个地方有一个控制台应用程序。
  • @Sertac Akyuz:这正是问题所在。非常感谢!

标签: delphi


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2011-04-20
    • 2011-04-04
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多