So, ich habs derweil mal hinbekommen. Das Kernproblem war bei mir mehrschichtig. Zum einen arbeite ich noch mit Delphi 5 und 7, da gabs noch nicht alle Imports aus der Kernel32.dll. Zum zweiten muss man sich erstmal das
Handle der aufrufenden Konsoleninstanz holen. Andernfalls öffnet sich ein neues Konsolenfenster, gibt den Text aus und schließt sich wieder. Auf aktuellen Rechnern geht das so flott dass man das kaum bis gar nicht mehr mitbekommt. Leider gibt es die
API AttachConsole erst ab XP aufwärts, aber das sollte ja im Moment ohnehin das Minimum sein.
Delphi-Quellcode:
// Konstante definieren
ATTACH_PARENT_PROCESS = DWord(-1);
// API einbinden
function AttachConsole(dwProcessId: DWord): Boolean;
stdcall;
external '
kernel32.dll'
name '
AttachConsole';
// Hier beginnt das About (innerhalb der .DPR vor dem Application.Initialize)
if Pos('
/?', CmdLine) > 0
then begin
if AttachConsole(ATTACH_PARENT_PROCESS)
then begin
try
WriteLn(#13#10 + '
About');
finally
FreeConsole;
end;
Exit;
end else begin
ShowMessage('
About');
Exit;
end;
end;