Dauerhaft überprüfung der Tasteneigenschaften. Ohne aktive Form

ronaldo84

Erfahrenes Mitglied
Hallo.

Ich möchte gerne ein Makro schreiben, welches die Tastatureingaben überprüft und je nach Tasten ein Formular öffnet. Ich habe aber kein aktives Formular. Es soll so laufen wie bei F1 das dann die Hilfe kommt. Geht das überhaupt? Wie ich es in einem Formular über die Eigenschaften Key_down und Key_up mache weiß ich. Aber ich habe ja kein wirkliches event. Die Tastatur müsste dauerhaft geprüft werden. Geht das?

Danke
 
Die (meines Wissens nach) einfachste und beste Variante ist die Nutzung der GetAsyncKeyState-API, damit kannst du ohne Form alle Tasten abfragen (auch die, die du über die Form-Events nicht kriegst).


Der Doc!
 
Sorry das ich das Thema nochmal eröffne. Wenn ich es mit der obern genannten API mache brauche ich ja ein Zeitintervall indem die Tastatur geprüft werden soll. Da das dauerhaft von passieren soll habe ich mittels
Code:
do while timer < timer +1 
..
loop
Eine endloschleife gebaut. So ist das aber nicht machbar. Wenn ich z.B. das Makro starte und will dann wieder in eine andere Anwendung wechseln steigt die Systemauslastung auf nahezu 100%. Weiß jemand eine bessere Methode?
Habe meine Fragestellung nochmal überlegt. Das sind meine Vorraussetzungen:
WIr haben eine DB mit weit über 50 verschiedenen Formularen. Das Ziel ist es mittels Tastendruck bestimmte Formuale zu öffnen. Das soll funktionieren, egal welches Formular offen ist. Das würed in eigentlich heíßen, dass ich bei jedem Formular das Ereignis On Keypressed ändern müsste. Das wäre aber zuviel Arbeit. Kann mir da jemand weiterhelfen?
Danke
 
Ich hab erst jetzt gelesen, dass du Makro geschrieben hast, da hätte ich eine andere Lösung für dich.

Du kannst in Office ganz einfach einer Tastenkombination ein Makro zuweisen, einfach unter Extras - Anpassen auf den Reiter Befehle gene und den Button Tastatur unten anklicken. Jetzt im neuen Fenster nur noch dein Dokument und das zu startende Makro wählen. Dann klickst du in das Textfeld unter Neue Tastenkombination und drückst die gewünschten Tasten. Office sagt die auch gleich, ob die Kombi noch frei ist oder du eine existierende überschreiben würdest.

Das ganze ließe sich auch als Makro automatisieren, der Makrorecorder hat folgendes ausgespuckt:
Code:
'Hier wird dem aktiven Dokument die Tastenkombi <Strg>+<Alt>+<F12> zugewiesen
'und auf Drock der Kombination das Makro "Makroname" im aktiven Dokument ausgeführt.
 CustomizationContext = ActiveDocument
 KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyF12, wdKeyControl, wdKeyAlt), _
  KeyCategory:=wdKeyCategoryMacro, Command:="Makroname"

Das ist die Office-Lösung. Wenn du in VB (also der Standalone-Anwendung) programmierst, schreib in deine Schleife einfach den Befehl DoEvents rein. Dann kann Windows zwischenzeitlich alle Systemtasks und anderen Programme aufsühren, ohne dass dein Programm die CPU blockiert.


Der Doc!
 
Zurück