Brücke zu fertigen Programmen?

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]