007
07.05.2003, 14:08 Uhr
mike
Pinguinhüpfer (Operator)
|
Hmmm.... Also wenn man einfach den KEYDOWN ans Programm sendet, weiß dieses - meiner Meinung nach - nicht, was es damit tun soll. Wenn dann im KEYDOWN Funktionsprototyp dann noch der Key nicht definiert wird, ist das ein big Problem. Mein obiges Bsp. funktioniert auch nur, weil CRichEditCtrl die Nachricht EM_REPLACESEL kennt.
Ist jetzt die Frage, obs auf nen anderen Weg geht
Zitat: |
Vielleicht werden sie schon darüber gestolpert sein, dass die Sendkeys-Anweisung unter Windows 2000 manchmal nicht so funktioniert wie erwartet. Dahinter steckt ein Bug, der Microsoft bereits bekannt ist - der Artikel Q276346 der Knowledge-Base weist darauf hin. Darin werden auch Wege zur Umgehung des Problems angedeutet - sehr hilfreich und ein wirklicher Ersatz für die SendKeys-Anweisung sind sie jedoch nicht.
Der Ansatz, ein einzelnes Tastatur-Ereignis über die API-Funktion keybd_event zu versenden, ist allerdings goldrichtig. Dabei ist "Tastatur-Ereignis" durchaus wörtlich zu verstehen: Das Niederdrücken und das Loslassen einer Taste sind zwei verschiedene Ereignisse. Wie bei SendKeys auch werden die gesendeten Tastendrücke an das Fenster bzw. Steuerelement übergeben, das gerade den Fokus inne hat. Zum Simulieren des Niederdrückens einer Taste übergeben Sie der Funktion keybd_event im ersten Parameter den zu sendenden KeyCode der Taste - in den übrigen Parametern übergeben Sie 0. Zum Simulieren des Loslassens einer Taste übergeben Sie ebenfalls den KeyCode im ersten Parameter, und dazu im dritten Parameter die Konstante KEYEVENTF_KEYUP
|
Wie kann es auch anderes sein
mfg mike --
Dieser Post wurde am 07.05.2003 um 14:09 Uhr von mike editiert. |