Hi,
ich will eine Art von Makrorecorder programmieren.
Die die ich bis jetzt gesehen habe taugen nicht für mein Problem.
1. Ist es möglich ein anderes Programm am Bildschirm zu maximieren,
egal wie es vorher angezeigt wurde (das Programm läuft auf jeden Fall und die Titelleiste ist bekannt).
2. Wenn es nun maximiert ist sollen Mausclicks an verschiedenen Stellen erfolgen (die Positionen sich wiederum bekannt).
3. Eventuell sollen noch Texte in Felder eingegeben werden.
Also klick in des Textfeld und Texteingabe simulieren.
Das Programm selbst ist nicht von mir und auch nicht in Xbase++ geschrieben.
Fenster maximieren, Klicks ausführen, alles automatisch ...
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Hallo Hubert,
Viele Grüße,
Günter
Das geht ganz ähnlich wie das In-den-Vordergrund-holen einer Anwendung.1. Ist es möglich ein anderes Programm am Bildschirm zu maximieren,
egal wie es vorher angezeigt wurde (das Programm läuft auf jeden Fall und die Titelleiste ist bekannt).
Code: Alles auswählen
#define SW_MAXIMIZE 3
/*
Ist der Name der Fensterklasse nicht bekannt, kann man als 1. Parameter NIL übergeben. Der Fenstertitel im 2. Parameter sollte komplett übergeben werden.
*/
FUNCTION MaximizeApp( cClass, cTitle )
Local nHwndFind, nHwndLast
DEFAULT cClass TO 0
DEFAULT cTitle TO 0
nHwndFind := FindWindowA( cClass, cTitle )
If nHwndFind = 0
Return FALSE
Endif
nHwndLast := GetLastActivePopup( nHwndFind )
ShowWindow( nHwndLast, SW_MAXIMIZE )
BringWindowToTop( nHwndLast )
SetForegroundWindow( nHwndLast )
Return TRUE
DLLFUNCTION FindWindowA( ClassName, WinName ) USING STDCALL FROM user32.dll
DLLFUNCTION GetLastActivePopup( hWnd ) USING STDCALL FROM user32.dll
DLLFUNCTION ShowWindow( hWnd, nCmdShow ) USING STDCALL FROM user32.dll
DLLFUNCTION BringWindowToTop( hWnd ) USING STDCALL FROM user32.dll
DLLFUNCTION SetForegroundWindow( hWnd ) USING STDCALL FROM user32.dll
Das geht mit SendInput() bzw. keybd_event() und mouse_event(). Dieser Thread hilft vielleicht weiter.2. Wenn es nun maximiert ist sollen Mausclicks an verschiedenen Stellen erfolgen (die Positionen sich wiederum bekannt).
3. Eventuell sollen noch Texte in Felder eingegeben werden. Also klick in des Textfeld und Texteingabe simulieren.
Viele Grüße,
Günter