Bedeutung von WM_COMMAND bei SendMessage
-
Hallo,
ich habe mal eine theoretische Frage, was bedeutet in der SendMessage Funktion WM_COMMAND?
Hintergrund ist der, ich habe eine Funktion geschrieben, die automatisch, timer gesteuert einen button anklicken soll, aber leider ist diese funktion nicht sehr zuverlässig, mal wird der button betätigt, und ein anderes mal nicht.
::SendMessage(hwnd,WM_COMMAND,4471,0);4471 Control ID vom Button
mfG Net_Hans
-
Hallo,
ich hab jetzt festgestellt, das mein SendMessage immer nur dann ausgelöst wird, wenn ich mit einer Maus irgendwo hin klicke ... egal wohin ... woran kann das liegen?
-
An deinem fehlerhaften Code?
-
Hmm, ok das mein code nicht zu 100% sauber ist, ist mir auch klar...
Problem ist halt nur warum, im goben und ganzen besteht mein code nur aus 2 Zeilen. Einmal dem Finden meiner Handlings und dann die Geschichte mit dem SendMessage, den Rest erledigt eine Timer-Komponente von Visual C++
mein Code:
private: Sysatem:: Void timer1_Tick(System::Object^ sender, System::EventArgs^ e){ HWND hwnd = FindWindow(0,L"Form1"); if(hwnd != 0 ) ::SendMessage(hwnd,WM_COMMAND,4471,0); }
-
Was bezweckst Du mit dieser abstrusen Mischung aus C++/CLI Windows Forms Code und Windows API Code.
Bleib bei einer Library.WM_COMMAND ist eine Nachricht. WM_COMMAND wird von Controls an ein parent mit entsprechenden Notifications gesendet. Buttons, Edit Controls etc. nutzen dies.
Später entwickelte Controls verwenden WM_NOTIFY.
-
Hallo Martin,
was meinst du mit bei einer Libery bleiben, mit welchen Befehlen müsste ich jetzt arbeiten, um den code sauber zu gestalten?
-
Net_Hans schrieb:
Hallo Martin,
was meinst du mit bei einer Libery bleiben, mit welchen Befehlen müsste ich jetzt arbeiten, um den code sauber zu gestalten?
Er meint wohl, dass du entweder deine Geschichte mit .NET ODER C++/WinAPI zu Ende bringen sollst.
Was ich sowieso nicht verstehe:
Du sagtest, dass du einen Button klicken möchtest ... warum holst du dir dann ein Handle auf die Form und nicht direkt auf den Button? Dann könntest du diesem auch BM_CLICK senden ...
-
Achso ok, muss ich mal gucken wie sich der Umstieg gestalten würde.
Warum ich mir das Handling von der Form hole ist ganz einfach, ich habe es bei Google so gefunden und da ich absoluter Anfänger auf dem Gebiet bin, hab ich das erst mal so hingenommen ... da es ja im ansatz funktioniert.
Mein Problem ist ja, das ich noch irgend ein Ereigniss auslösen muss, welches durch Mausklicks wiedergespiegelt wird, um meine SendMessage zu, naja sagen wir mal, zu aktivieren.
-
Net_Hans schrieb:
Mein Problem ist ja, das ich noch irgend ein Ereigniss auslösen muss, welches durch Mausklicks wiedergespiegelt wird, um meine SendMessage zu, naja sagen wir mal, zu aktivieren.
Das einzige was du wissen musst, ist - natürlich - wann du auf den Button klicken möchtest. Diese Geschichte mit den Mausklicks lässt sich - für mich - nicht wirklich nachvollziehen.
-
wie meinst du das, ich muss wissen, wann ich auf den Butten klicken möchte ... ich möchte sofort klicken, sobald dieser aktiv ist. Könntest du mir bitte eine Beispielcode posten?
Danke für die Hilfe
mfG Net_Hans
-
gibt es ein Programm, mit dessen Hilfe ich alles Messages die in Programmen ausgelöst oder versendet werden mitschneiden und anzeigen kann? so das ich raus bekommen, warum meine anwendung erst nach einem realen Mausklick das tut was sie soll?
-
Ja, Spy++.
Ist beim Visual Studio dabei ! Das hast du doch oder ?
Wenn nicht hilft Google.

-
Net_Hans schrieb:
ich möchte sofort klicken, sobald dieser aktiv ist.
Was meinst du mit "aktiv"? Sobald die entsprechende Form erscheint möchtest du auf den Button klicken?
Und falls ja, soll er nur einmal gedrückt werden oder wiederholt sich das Ganze dann?Falls noch nicht geschehen, schilder mal bitte etwas genauer, was du eigentlich bezwecken möchtest, dann kann ich dir auch Beispielcode geben.
-
Hallo,
erst mal danke noch mal für eure Hilfe.
Mein Problem besteht darin, das ich automatisch via Outlook E-Mails versenden muss (von einem Server aus), um Status und Fehlermeldungen an Techniker weiter zu leiten. Leider stellt sich Outlook in der Version 2003 da etwas quer und bring eine schön vielen gut bekannte Warnmeldung, welche 5 Sekunden wartet bis sie den "Ja" Button frei gibt.
Im Internet habe ich auch schon ein ein Programm gefunden, welches diese Meldung automatisch abarbeitet, aber leider ist diese für einen Server nur in der kostenpflichtigen Version erhältlich. Aus diesem Grund muss ich da jetzt selber ran, da mir die Mittel für diese Software nicht genehmigt wurden.Das überwachen, wann diese Meldung erscheint ist kein Problem, das läuft auch wunderbar, aber dann das "anklicken" des Ja Buttons macht so die einen oder anderen Probleme. Wenn mein Programm läuft und die Meldung erkennt, muss ich immer noch 2 mal irgendwo mit der Maus hin klicken, bis der SendMessage Befehl den Ja Button drückt.
Hoffe das ich mein Problem jetzt in voller länge geschildert habe, so das ihr mir noch den einen oder anderen Tipp geben könnt, wie ich mein Problem lösen kann.
Danke
Mit freundlichen Grüßen
Net_Hans
-
Achja was ich vergessen habe, ich benutze als Oberflächte Visual C++ 2008 Express
-
1. Such mal nach Redemption DLL! Damit kann man das umgehen.
2. Freeware gibt es auch: http://www.mapilab.com/de/outlook/security/
-
Hallo,
danke für die schnelle Hilfe, ich denke mal das es genau das ist, was ich im Ansatz selber programmieren wollte, bzw ist genau das was ich suche.
Schöne Ostern
Net_Hans