Frage zu SendMessage() Was mache ich nur falsch ??
-
Hallo zusammen,
bin Anfänger und habe ne Frage zu folgendem Code:
#include <windows.h> int main() { POINT mPos; mPos.x = 1279; mPos.y = 9; HWND mHandle; mHandle = F023E; // Was ist da falsch??? WPARAM m_posx; LPARAM m_posy; m_posx = mPos.x; m_posy = mPos.y; SendMessage(mHandle,WM_LBUTTONDOWN,m_posx,m_posy); return0; }Ziel: Klick auf die Koordinaten 1279x9 im InternetExplorer.
Mein Spy-Programm sagt mir, der Handle zum IEFrame = 000F023E. Oder ist das nicht der Handle

Nach dem Compilieren des Codes gibt es die Fehlermeldung:error C2440: '=' : 'const int' kann nicht in struct HWND__*'konvertiert werden...Offensichtlich passt das Format nicht ?!?
Funktioniert SendMessage so wie ich es geschrieben habe ? Oder was mach ich falsch??
Wär super wenn mir jemand helfen könnte.
Grüsse in die Nacht !
-
Mit einem Typecast kannst du den Integer in ein Handle verwandeln. Das sieht dann in C z.B. so aus:
mHandle = (HWND)0xF023E;(Das 0x hast du sicher nur vergessen hier einzutippen)
Aber das Fensterhandle ist natürlich bei jedem Start des IE ein anderes (logisch, es kann ja auch mehrere IE-Fenster geben und die haben natürlich nicht das selbe Handle). Also wenn es nicht nur einmal funktionieren soll bräuchtest du eine dynamische Lösung. Mit der Forensuche oder in der FAQ findest du Beispiele, wie es dynamisch geht (wird oft im Zusammenhang mit dem schließen des IE gepostet [WM_CLOSE], was dann evtl. auch gleich eine Alternative wäre, wenn du das auch bezwecken möchtest).
Allerdings hoffe ich doch, dass du das Programm brauchst und nicht dadurch lernen willst, dazu ist die WinAPI IMHO nicht geeignet und vor allem würde ich nicht C lernen, sondern C++, der Umstieg von der prozeduralen Programmierung zur objektorientierten fällt mir persönlich recht schwer, daher nur als kleiner Tipp.
-
buli schrieb:
Funktioniert SendMessage so wie ich es geschrieben habe ? Oder was mach ich falsch??
Mhh, seh ich jetzt erst, nein, so funktioniert es nicht, siehe http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_lbuttondown.asp
MAKELPARAM hilft dir, den Wert für lParam zu erzeugen.
-
HAllo Daniel,
vielen Dank für die Antwort. Ich werde das probieren und melde mich dann wieder .
Sag mal, woran erkennt man im obrigen Beispiel dass es sich um c-Code und nicht um c++ handelt ?Gruss Buli