Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: GUI-Anwendung mit Konsolenausgabe

  Alt 14. Apr 2011, 12:11
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.dllname '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;
  Mit Zitat antworten Zitat