Crush Geschrieben 25. September 2001 Geschrieben 25. September 2001 Also ich erkläre mal kurz, worum es geht. In WEB.de kann man kostenlos telefonieren. Leider muß man alle 2 Minuten auf die Werbung klicken - und beim Quasseln bin ich so daneben, daß ich das gelegentlich verpasse. Jetzt will ich mir ein kleines Progrämmchen machen, welches es mir erlaubt trotzdem weiter durch die Gegend zu surfen und alle notwendigen Klicks zeitgenau zu setzen, damit das Telefonat nicht abgebrochen wird. Klappt eigentlich alles wunderbar, nur eines nicht: Ich schaffe es nicht den Button, auf dem der Curser liegt tatsächlich zu aktivieren?!!?! (schnaub!) Testweise wird im Internet-Explorer (von T-Online gestartet) die Seite Google.de angezeigt. Dann wird das Programm gestartet. Es sucht sich das Fenster anhand des Fenstertitels und bringt es testweise mal nach vorne, holt sich die Curserpositionen, Dialog-IDs, usw. und versucht vergeblich einen "echten" Linksklick auszulösen. Hier das Programm und alle kläglichen Testversuche: CWnd *pInternetWindow; pInternetWindow = FindWindow(0,("Google - Microsoft Internet Explorer von T-Online")); if(pInternetWindow == NULL) {//Fehlerbehandlung}; else { CPoint mypoint; mypoint=pInternetWindow->GetCaretPos(); // Position auslesen WPARAM Wparam; LPARAM Lparam; Wparam=mypoint.x; // Vorbereiten zum Klick Lparam=mypoint.y; pInternetWindow->BringWindowToTop(); // Fenster nach Vorne (nur Test) pInternetWindow->SendMessage(WM_LBUTTONDBLCLK); pInternetWindow->SendMessage(WM_LBUTTONDBLCLK,Wparam,Lparam); pInternetWindow->SendNotifyMessage(WM_LBUTTONDBLCLK,Wparam,Lparam); int unkn=pInternetWindow->GetDlgCtrlID(); // aktuelles ControlID pInternetWindow->SendDlgItemMessage(unkn,WM_LBUTTONDOWN); pInternetWindow->PostMessage(WM_LBUTTONUP); } Funktioniert alles wunderbar, nur halt der Klick wird nicht ausgeführt. Ich habe schon alles mögliche ausprobiert und verzweifel langsam. Vielleicht kennt jemand die Lösung des Problems? <FONT COLOR="#a62a2a" SIZE="1">[ 25. September 2001 19:32: Beitrag 1 mal editiert, zuletzt von Crush ]</font> Zitieren
Klotzkopp Geschrieben 26. September 2001 Geschrieben 26. September 2001 Such Dir besser gleich die Fensterklasse des Buttons mit dem Spy++ raus. Zum Klicken hatte ich schon mal was geschrieben: void MouseClick( HWND hWnd ) { if( !hWnd ) return; RECT rect; POINT mousePos; GetCursorPos( &mousePos ); ::GetWindowRect( hWnd, &rect ); int left = rect.left; int top = rect.top; ::GetClientRect( hWnd, &rect ); int width = rect.right; int height = rect.bottom; SetCursorPos( left + width / 2, top + height / 2 ); ::SendMessage( hWnd, WM_LBUTTONDOWN, MK_LBUTTON, x + 65536 * y ); ::SendMessage( hWnd, WM_LBUTTONUP, MK_LBUTTON, x + 65536 * y ); SetCursorPos( mousePos.x, mousePos.y ); } [/code] Prüf aber bitte, ob die Nutzungsbedingungen von WEB.DE solche Tools nicht verbieten Zitieren
Crush Geschrieben 27. September 2001 Autor Geschrieben 27. September 2001 Seltsam seltsam. Selbst wenn ich alle 107 aktiven Fenster vom Internet-Explorer einen LButtondown & up schicke, werden zwar alle möglichen aktionen ausgelöst (also werden die Klicks korrekt verschickt), ABER AUSGERECHNET IM SURF-WINDOW GAR NICHTS! Kann das vielleicht daran liegen, daß sich die Daten in einer Document-Struktur befinden? Leider hab ich noch nicht rausgefunden, wie ich an das Document-handle rankommen könnte. Vielleicht will so MS verhindern, daß Würmer und Viren den Explorer extern steuern?!?! Trotzdem Danke! Allerdings hat das auch nichts anderes gemacht wie das was ich so getan habe (nur halt ohne Pixelpositionen). Zitieren
Alrik Fassbauer Geschrieben 27. September 2001 Geschrieben 27. September 2001 Das Fenster explizit aktivieren ? Zitieren
mst Geschrieben 12. Dezember 2001 Geschrieben 12. Dezember 2001 Das ist jetzt nur eine spontane Idee und ich habe damit auch noch nicht gearbeitet, aber vielleicht helfen dir folgende www.codeguru.com Links weiter. Connecting to a running instance of Internet Explorer How can I simulate the right button click? Ich glaube in der MSDN ist auch ein Punkt mit dem Namen "Internet Explorer-Programmierung". Vielleicht ist da Hilfe zu finden. Zitieren
PhOen1X Geschrieben 14. Dezember 2001 Geschrieben 14. Dezember 2001 VB lamet zwar a weng. Aber da gibts doch son SendKey. Müsst doch unter VC++ auch irgendwie gehen? Wennst ez ein Prog machst, des z.B. all paar Min. den Task mit ALT+TAB per SENDKEY wechselt könnts doch klappern, dass von dem Fenster wo Du grad Surfst zu dem WEB-Telefon-Klickfenster gewechselt wird. (Kannst ja vorher mal Kurz ne Systemwarnung ausgeben, das des Fenster z.B. in 2 sec gechanged wird.) Wennst dem Windows dann noch nen TAB mitschickst, sollt eigentlich der Button, den Du alle 2 Min drücken mußt aktiviert sein. Ez noch n fettes RETURN und die nächsten 2 Min gespräch sollten geritzt sein! Noch mal nen Fenster change und Du kannst weiter Surfen! Übrigens wenn des klappt bräucht ich des Prog auch mal! *GrinZ* Möcht auch per WEB telfonieren! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.