可交互的Delphi控制台常驻程序

摘要:

Delphi控制台常驻程序,第三方程序可通过控制台标准输入输出与之进行交互
program app;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,System.Classes,Windows;
var
  userInput: String;
  ConsoleHandle: THandle;
  procedure WriteText(sMessage:UTF8String;const bLine:boolean=true);
  var
    num:Cardinal;
    sText:UTF8String;
  begin
    sText:=sMessage;
    if bLine then sText:=ConCat(#13,sMessage,#10);
    WriteFile(ConsoleHandle, sText[1], Length(sText), num, nil);
    FlushConsoleInputBuffer(ConsoleHandle);
  end;

begin
  try
  ConsoleHandle := GetStdHandle(STD_OUTPUT_HANDLE);
  while (1=1) do
    try
      WriteText('[delphi console]# ',false);
      Readln(userInput);
      if (userInput.CompareTo('quit')=0) then break
      else if userInput.StartsWith('ECHO') then
         WriteText('{"code":200,"msg":"ECHO"}')
      else if userInput.StartsWith('INFO') then
         WriteText('{"code":200,"msg":"INFO"}')
      else WriteText('{"code":500,"msg":"unknown command"}');
    except
      on E: Exception do
        WriteText('{"code":500,"msg":"'+E.Message+'"}');
    end;
    { TODO -oUser -cConsole Main : Insert code here }
  finally
    CloseHandle(ConsoleHandle);
  end;
end.

给我留言

个人介绍

about me

奕华

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

联系方式