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 Service Appのディレクティブを使用せずに、標準出力をコンソールに接続する別の方法はありますか?

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 に答える