Hallo,
wie kann man softwaremäßig eine Funktion in einem bestehenden Programm starten, die dort nur mit einem Mausklick aufrufbar ist (kein shortcut vorhanden)?
Vielen Dank für Antworten
Gruß
Christian
Hallo,
wie kann man softwaremäßig eine Funktion in einem bestehenden Programm starten, die dort nur mit einem Mausklick aufrufbar ist (kein shortcut vorhanden)?
Vielen Dank für Antworten
Gruß
Christian
Mann kann eine Mausklick-Botschaft an das Haupt-Fenster des Programms senden. Dazu benötigt man das Handle dieses Fensters, womit man zunächst seine Position erfragt, dann berechnet, wo der Mausklick stattfinden muß und dann die Botschat WM_LBUTTONDOWN und WM_LBUTTONUP an das Fenster-Handle sendet, mit den Koordinaten als Parameter. Wenn das Fenster ganz oben ist, tuts es auch die Funktion mouse_event.
Die Funktion findet das Fenster-Handle:
HWND FindWindowEx(
HWND hwndParent, // handle to parent window
HWND hwndChildAfter, // handle to a child window
LPCTSTR lpszClass, // pointer to class name
LPCTSTR lpszWindow // pointer to window name
);
hwndParent ist für ein Hauptfenster NULL, hwndChildAfter kann auch NULL sein, lpszClass ebenso aber lpszWindow muß den Namen des Fensters enthalten.
Wenn es sich um das oberste Fenster handlet, kann man folgende Funktion nehmen:
HWND GetTopWindow(
HWND hWnd // handle of parent window
);
wobei hWnd wieder NULL ist für das Hauptfenster.
Die Mausbotschaften kannst du senden mit
LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
bzw. mit
VOID mouse\_event(
DWORD dwFlags, // flags specifying various motion/click variants
DWORD dx, // horizontal mouse position or position change
DWORD dy, // vertical mouse position or position change
DWORD dwData, // amount of wheel movement
DWORD dwExtraInfo // 32 bits of application-defined information
);
Gruß
Jochen
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]