Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

SetConsoleCtrlHandler Verständnisfrage(n)

  Alt 23. Aug 2009, 11:06
Hi,

ich habe da mal 'n Problem. Ich versuche gerade bei einer Konsolenanwendung das
Schliessen per X-Button der Titelleiste abzufangen.

Der Quelltext schaut do aus:
Delphi-Quellcode:
program Test;

{$APPTYPE CONSOLE}

uses
  Windows;

var
  AppTerminated: Boolean;

function ConCtrlHandler(dwCtrlType: DWORD): Bool; stdcall;
begin
  Result := True;

  {case dwCtrlType of
    // CTRL+C signal was received, either from keyboard input
    CTRL_C_EVENT:;    

    // CTRL+BREAK signal was received, either from keyboard input
    CTRL_BREAK_EVENT:;    

    // --> system sends to all processes attached to a console when the user closes the console
    CTRL_CLOSE_EVENT:;

    // system sends to all console processes when a user is logging off.
    CTRL_LOGOFF_EVENT:;    

    // system sends to all console processes when the system is shutting down
    CTRL_SHUTDOWN_EVENT:; 
   end }


  AppTerminated := True;
end;

begin
  AppTerminated := False;
  SetConsoleCtrlHandler(@ConCtrlHandler, True);

  while not AppTerminated do
  begin
    Write('Working...'#32);
    sleep(100);
  end;

  writeln(#10#13);
  writeln('...und Tschuess!');
  sleep(500);
end.
Per CTRL+C und CTRL+BREAK funktioniert das so wie es soll.
Schliesse ich die App, bei der Entwicklung in der IDE (D6 PE),
per X-Button hängt sich die IDE (bzw. der Debugger ?) auf.

Wenn ich die App ohne IDE starte und mit dem X-Button beende,
kommt es nicht bei "...und Tschuess!" an.

Irgend welche Ideen ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat