ich habe wieder ein Problem.
Aus einer Form heraus wird ein sehr zeitaufwendiges Unterprogramm gestartet (kann eine Minute und mehr dauern je nach Dateigröße der geladenen Datei). Leider scheint da die Tastaturabfrage nicht mehr zu funktionieren, sodaß man nicht das Programm vorzeitig abbrechen kann.
Ich habe eine Boolean-Variable stop. Sobald die auf TRUE gesetzt wird, werden alle übergeordeneten Programme bis einschließlich des Unterprogramms selber beendet und die Form.free aufgerufen. Dann müßte eigentlich die Anwendung schließen.
Ich habe verschiedene Versuche gestartet:
Wenn ich ich ein Onkeydown-Ereignis erstelle und dann abfrage
Code: Alles auswählen
if key = 27 then stop := true; // Escape
Ich habe es versucht (in Windows) mit
Code: Alles auswählen
if GetKeystate(VK_ESCAPE)<0 then stop:=true;
Und das Eigenartige: wenn ich das Programm kompiliere bzw das kompilierte Programm laufen lasse und dann die Maus oder eine Taste drücke, dann bleibt das Programm einfach hängen, und ich kann es nur noch mit dem Windows-Taskmanager beenden (das Programm bzw den Debugger).
In DOS gab es die Möglichkeit mit INT 16, aber das geht in Win32 nicht mehr. Außerdem gab es die Möglichkeit, direkt auf den Tastaturpuffer zuzugreifen und diesen "von Hand" auszulesen. Ist das jetzt auch noch möglich?
Oder bleibt mir da nur, zwei unabhängige Threads zu programmieren, sodaß der Tastendruck die Variable stop auf TRUE setzt?
Weiß jemand, wie ich das Problem lösen kann?
Herzlichen Dank!