我以前为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事件。
是否有其他方法可以将标准输出连接到控制台而不使用Delphi Windows Service App的{$APPTYPE CONSOLE}
指令?
答案 0 :(得分: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