Seite 1 von 1

Simulierung der Tastatureingabe

Verfasst: Mo, 07.02.2005 17:02
von Psionwelt
Hallo,

habe seit des Umstiegs von Ooo 1.1.3 auf 1.1.4 ein Problem.
Ich benutze ein Programm, dass in allen Anwendungen funktionieren soll und wie folgt arbeitet:

1. Ein Name wird eingetippt.
2. Das Programm wird per Hotkey gestartet.
3. Das Programm markiert mit Ctrl+Shift+Left den Namen
4. Das Programm kopiert den Namen mit Ctrl+C in die Zwischenablage
5. Das Programm fügt mit Ctrl+V einen Text in das Dokument ein.

Wie gesagt, das Programm soll in allen Anwendungen funktionieren. Es funktioniert in Oo Calc, in Word, im Notepad, aber NICHT in Oo Text.

Folgendes geschieht:
Nach dem Programmaufruf springt der Cursor links neben den Namen. Und das wars. Der Name wird nicht markiert, er wird auch nicht in die Zwischenablage kopiert.
Warum nicht? In Version 1.1.3 hat es doch noch funktioniert. Womit kann das zusammenhängen?

Psionwelt

Verfasst: Di, 08.02.2005 15:08
von Psionwelt
Na gut, das war vielleicht etwas wenig Futter.

Hier also der entscheidende Ausschnitt aus dem Programm:
void CWndCatchMsg::SendCopyMsg(HWND _hWndFG)
{
m_hWndFG = _hWndFG;
::SetForegroundWindow(m_hWndFG);

m_bAwaitingData = TRUE;

keybd_event(VK_CONTROL, SCAN, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event(VK_SHIFT, SCAN, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event(VK_LEFT, SCAN, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event(VK_LEFT, SCAN, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, SCAN, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, SCAN, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

keybd_event(VK_CONTROL, SCAN, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event('C', SCAN, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event('C', SCAN, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, SCAN, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
Wie der Fachmann sicherlich sofort erkennt, handelt es sich um C++.
Kompiliert wird das Programm mit dem Microsoft C++ 6 Compiler.

Verblüffenderweise scheint OpenOffice die Aufhebung der Steuertasten als Befehl zu interpretieren; jedenfalls springt der Cursor nach dem Markieren des Wortes links vor das Wort, bevor etwas in den Zwischenspeicher übergeben wird.

Irgendeine Idee?

Psionwelt