Nachricht an fremdes Childwindow -> klappt nicht
-
hat keiner eine Hilfestellung für mich ?
-
Ist es möglich, dass WindowFromPoint() nur ein Handle auf das ganze Fenster, statt auf den Textbereich zurückgibt?! Wenn ja, dann kannst du im zweiten Schritt ja mal
HWND ChildWindowFromPoint(HWND hWndParent, POINT Point);probieren.
http://msdn2.microsoft.com/en-us/library/ms632676.aspx
Ich selber konnte es leider noch nicht testen.
-
Danke für den Tipp ich werds auf jedenfall probieren aber eigentlich müsste doch auch FindWindowEx funktionieren oder ?
-
Da ich es nicht selber ausprobiert hab bin ich mir nicht sicher, ob
WindowFromPoint()immer einen Handle auf das selektierte Subfenster zurück gibt oder nur auf das ParentWin und die MSDN hilft da auch nicht wirklich ("The WindowFromPoint function retrieves a handle to the window that contains the specified point."). Du könntest das natürlich überprüfen, in dem du dir einen Breakpoint auf
Handle2 = FindWindowExW(Handle, NULL, _T("Edit"), NULL);setzt und dann die ID des Fensters auf den Handle zeigt, mit der ID des Textfensters des Editors verlgeichst (mit Hilfe von Spy++).
Ein weitere Theorie ist, das die Fensterstruktur nicht linear aufgebaut ist. Diese Struktur kann man aber ebenfalls mit Spy++ ermitteln. Dass heißt, wenn Handle auf die gesamte Anwendung zeigt, kannst du dich auch mit den Funktion
HWND GetWindow( HWND hWnd, UINT uCmd );zum richtigen Subfenster "durchhangeln".
http://msdn2.microsoft.com/en-us/library/ms633515.aspx
Aber du hast natürlich recht, wenn Handle wirklich auf das Hauptfenster zeigt, dann sollte
FindWindowEx()auch den richtigen Handle liefern. Bist du dir sicher, dass die Klasse nach der er da suchen soll "Edit" heißt ?
-
Bist du dir sicher, dass die Klasse nach der er da suchen soll "Edit" heißt ?
Ich habe es aus einem Codeschnippsel kopiert, welches dem letzt gepostet wurde,
( es war eine ANtwort auf eine Frage ) und WinID (spy++ hab ich nicht gefunden) sagt mir auch das es sich um "Edit" Class handelt
-
und ich kann eine Nachricht an Hanldle senden -> wenn der Mauszeiger auf der Menü oder Titelleiste ist. Die ChildWindowFromPoint Funktion funktioniert scheinbar nicht ( ich habe auch mit ScreenToClient umgerechnet ).
-
Jetzt hast du mich aber schon neugierig gemacht.
Heute werd ichs nicht mehr schaffen, aber morgen probier ich das selber mal aus.
Ne neue Idee hab ich im Moment noch nicht.
-
Das ist nett ich weis ja nichtmal ob es an Notepad, am Programmcode oder an mir liegt das es nichts tut
-
und gibts schon neues ?
-
schade dass mir keiner helfen kann ...

-
"WindowFromPoint ()" liefert bereits das richtige Handle. Alles mit "Handle2" ist überflüssig.

-
Danke das mir das jetzt auch einer sagt ! :D:D:D
Ich melde mich mal wieder wenns dann noch immer nicht funzt
-
OK VIEEEEEEELEN DANK es klappt !!!!
-
Also ich versuche das ja auch gerade, aber i-wie klappt das bei mir nicht...
Auch wenn der FehlerCode = 0 ist klappts nicht...Sleep(5000); GetCursorPos(&PPPOINT); // Mausposition ermitteln HWND Handle = WindowFromPoint(PPPOINT); SendMessage (Handle, VK_SPACE, VK_SPACE, 1L); Label1->Caption=GetLastError();Was mache ich falsch? Bitte helft mir

-
Was ist "PPPOINT" ? Eventuell hilft dieses :
... POINT pt; // GetCursorPos(&PPPOINT); // Mausposition ermitteln GetCursorPos(&pt); // HWND Handle = WindowFromPoint(PPPOINT); HWND Handle = WindowFromPoint(pt); ...*edit* oder jenes :
... // SendMessage (Handle, VK_SPACE, VK_SPACE, 1L); SendMessage (Handle, WM_KEYDOWN, VK_SPACE, 1L); ...