Zum Inhalt springen

HILFEHILFE - WIE KANN ICH DEN BUTTON AKTIVIEREN?!?!?!


Crush

Empfohlene Beiträge

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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).

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...