1

过去,我使用该框架为 Delphi 编写了许多服务。我现在想用一些类似控制台的功能来扩展服务。

我可以提供的最简单的示例是,我想在命令提示符下运行类似以下内容的服务可执行文件。

> myservice.exe /version

MyService Version 1.0

在项目文件中,我将在服务初始化之前处理参数并退出并完成。

If ParamStr(1) = '/version' then
begin
   writeln ('MyService Version 1.0');
   exit;
end;

// Other standard service launch code is after this for proper initialization
// when run as a service, i.e.
if not Application.DelayInitialize or Application Installing then 
...

但是,要使writeln声明生效,通常我需要{$APPTYPE CONSOLE}项目文件中的指令,然后中断服务应用程序 Destroy 事件。

{$APPTYPE CONSOLE}是否有另一种方法可以在不使用Delphi Windows 服务应用程序的指令的情况下将标准输出连接到控制台?

4

1 回答 1

1

新的自己的控制台

begin

  if paramstr(1)='/?' then
    begin
      if Windows.AllocConsole then
      try
        WriteLn;
        // irgendeine sinnvolle Information, z.B.:
        WriteLn('Your Info');
        readln;
      finally
        FreeConsole;
      end;
    end

  else
     begin
     //Your Appcode

或附加到控制台,而不创建自己的控制台

begin

  if paramstr(1) = '/?' then
  begin

    if AttachConsole($FFFFFFFF) then
    begin
      WriteLn('Your Info');
      Readln;
      FreeConsole; 
    end;
  end

  else
  begin
  // Your Appcode
于 2012-11-28T21:52:55.913 回答