Weil ein TSR-Programm aufgrund der Aktivitäten des DOS oder des BIOS nicht zu jedem Zeitpunkt in den Vordergrund geschaltet wrden kann, installieren die meisten TSR-Programme auch einen Interrupt-Handler für den Timer-Interrupt 08h, der eine Verzögerung der Aktivierung möglich macht. Dazu wird bei der Entdeckung des Hotkeys innerhalb des Tastatur-Interrupt-Handlers ein spezielles Flag gesetzt, wenn die Aktivierung des TSR-Programms gerade nicht möglich ist.
Dieses Flag wird nun innerhalb des neuen Timer-Interrupt-Handlers abgefragt, der 18,2 mal in der Sekunde aufgerufen wird, sofern das Vordergrund-Programm ihn nicht auf eine andere Taktfrequenz eingestellt hat. Wird dabei festgestellt, daß das TSR-Programm tatsächlich auf seine Aktivierung wartet und daß derzeit weder das DOS noch das BIOS aktiv ist, steht der Aktivierung des TSR-Programms nichts mehr im Wege.
Allerdings sollte die Zeitdauer, die zwischen der Betätigung des Hotkeys und der Aktivierung des TSR-Programms vergeht, begrenzt werden. Sonst kann es bei langwierigen DOS-Operationen dazu kommen, daß das TSR-Programm erst mehrere Sekunden nach der Betätigung des Hotkeys aktiviert wird. Fehlt eine zeitliche Begrenzung, weiß der Anwender nie, ob das TSR-Programm den Hotkey nicht erkannt hat oder ob es nur auf eine Möglichkeit wartet, das TSR-Programm zu aktivieren.
Das Flag, das für die verzögerte Aktivierung des TSR-Programms gesetzt wird, dient deshalb gleichzeitig als Zeitmesser, indem es mit jedem Aufruf des Timer-Interrupts dekrementiert wird. Nur, solange es dabei einen Wert größer als 0 aufweist, wird der Versuch zur Aktivierung des TSR-Programms unternommen. Initialisiert der Tastatur-Interrupt-Handler dieses Flag beispielsweise mit 6, muß die Aktivierung innerhalb der nächsten 6 Aufrufe des Timer-Interrupts erfolgen, was einer Zeitdauer von einer drittel Sekunde entspricht. Wenn nicht, bleibt die Betätigung des Hotkeys ohne Wirkung.
|