Hallo,
kennt irgend jemand von euch eine Möglichkeit unter DOS die Hardcopy-Funktion zu deaktivieren?
Vielleicht sogar steuerbar?
Print-Screen unter DOS unterdrücken
Re: Print-Screen unter DOS unterdrücken
Ja, ich kenne solche Möglichkeiten. Hier 'mal zwei voneinander unabhängige Vorschläge dazu:
1.) Zum Beispiel, sich in den Keyboard-INT (IRQ 1, = INT 09H) "reinhängen" und die entsprechenden Tasten vorher "abfangen". D.h. nur die Tasten weitergeben, die man will (also alle außer den "gesperrten".
- ODER -
2.) Die Unterfunktion von DOS, die diesen Hardcopy auslöst, "hooken", d.h. die entsprechende Funktion sperren.
D.h.: In der "Ralph Brown's Interrupt List" nach dieser Funktion suchen (ich nehme an, INT 21H, AH = irgendwas) und dann sich in den entsprechenden INT (also INT 21H) "reinhängen" und wenn AH = das_entsprechende_irgendwas ist, dann IRET, ansonsten eben normal zum ursprünglichen INT Vektor.
Zur Erklärung, was ich mit "reinhängen" meine:
- Interrupts sperren
- Entsprechenden INT-Vektor holen (Alter_Int_Vektor)
- INT-Vektor auf neue Aufgabe setzen
- Interrupts freigeben
Und die Interrupt-Service-Routine enthält dann an einer Stelle, wo einfach "unverändert" zum ursprünglichen Interrupt weitergegangen werden soll, einen FAR CALL zu Alter_Int_Vektor.
Wieder "Aushängen" geht halt so:
- Interrupts sperren
- INT-Vektor wieder auf Alter_int_Vektor setzen
- Interrupts freigeben
Falls Du es selbst nicht kannst und/oder der Wunsch besteht, daß ich da ein Stück Code schreibe oder eine TSR oder sowas, bitte melden.
1.) Zum Beispiel, sich in den Keyboard-INT (IRQ 1, = INT 09H) "reinhängen" und die entsprechenden Tasten vorher "abfangen". D.h. nur die Tasten weitergeben, die man will (also alle außer den "gesperrten".
- ODER -
2.) Die Unterfunktion von DOS, die diesen Hardcopy auslöst, "hooken", d.h. die entsprechende Funktion sperren.
D.h.: In der "Ralph Brown's Interrupt List" nach dieser Funktion suchen (ich nehme an, INT 21H, AH = irgendwas) und dann sich in den entsprechenden INT (also INT 21H) "reinhängen" und wenn AH = das_entsprechende_irgendwas ist, dann IRET, ansonsten eben normal zum ursprünglichen INT Vektor.
Zur Erklärung, was ich mit "reinhängen" meine:
- Interrupts sperren
- Entsprechenden INT-Vektor holen (Alter_Int_Vektor)
- INT-Vektor auf neue Aufgabe setzen
- Interrupts freigeben
Und die Interrupt-Service-Routine enthält dann an einer Stelle, wo einfach "unverändert" zum ursprünglichen Interrupt weitergegangen werden soll, einen FAR CALL zu Alter_Int_Vektor.
Wieder "Aushängen" geht halt so:
- Interrupts sperren
- INT-Vektor wieder auf Alter_int_Vektor setzen
- Interrupts freigeben
Falls Du es selbst nicht kannst und/oder der Wunsch besteht, daß ich da ein Stück Code schreibe oder eine TSR oder sowas, bitte melden.