Typ eines ChildWindows erkennen
-
Also, ich habe ein Handle auf ein Steuerelement. Diesem kann ich beispielsweise einen Click-Befehl senden.
Dieses Handle kann immer einem anderen Steuerelement zugehören und ist damit nicht klar differenzierbar.
Wie kann ich von einem solchen Steuerelement (ChildWindow) über sein Handle erfahren, was es ist?
Man sollte dazu sagen, dass diese Steuerelemente natürlich NICHT auf meiner eigenen Form sind, sondern in Fremdprogrammen.
Den Text eines Steuerelementes (z.B. Beschriftung eines Buttons) kann ich mir schon anzeigen lassen. Jedoch lässt sich nur bedingt daran erkennen, um was es sich handelt.
Wäre super, wenn jemand eine Idee hat.
PS: Ich hab mal schnell ein Beispiel geschrieben:
#include <iostream> #include <vector> #include <windows.h> #include <winuser.h> #include "hWin.h" using namespace std; int main( int argc, char* argv[] ) { const wchar_t* lpWindowTitle = L"Rechner"; const wchar_t* lpNewWinTitle = L"myForm"; //SetWindowText( hWindow, lpNewWinTitle ); const wchar_t* button_name = L"button1"; HWND hWindow = FindWindow( NULL, lpWindowTitle ); std::vector<HWND> hChild; GetChildWindows( hWindow, &hChild ); char* ChildTitle = new char[255](); for( int i = 0; i < (int)hChild.size(); i++ ) { GetWindowTextA( hChild[i], ChildTitle, 255 ); cout << ChildTitle << "\t" << i << endl; } int x = 1; while( x != 0 ) { cin >> x; SendMessage( hChild[x], BM_CLICK, 0, 0 ); } }
-
Wäre im WinApi Forum besser aufgehoben.
-
Un dein "new char" ist etwas wenig, wenn Du nacher sagst, dass er 255 Zeichen reinstopfen darf...
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Jochen Kalmbach schrieb:
Un dein "new char" ist etwas wenig, wenn Du nacher sagst, dass er 255 Zeichen reinstopfen darf...
Ähm, dass ist selbstverständlich ein Tippfehler. Im Ernst: Hab ich nur schnell zusammengeschrieben, da liegt nicht das Problem.
-
Über GetClassName kannst Du die Fensterklasse erfahren, wenn es sich um ein Standard-Control handelt weißt Du damit schon ziemlich viel...

-
FrEEzE2046 schrieb:
Jochen Kalmbach schrieb:
Un dein "new char" ist etwas wenig, wenn Du nacher sagst, dass er 255 Zeichen reinstopfen darf...
Ähm, dass ist selbstverständlich ein Tippfehler. Im Ernst: Hab ich nur schnell zusammengeschrieben, da liegt nicht das Problem.
Na ja, aber mal grundsätzlich: wenn du hier ein Beispiel postest, musst du damit rechnen, dass sich das jemand kopiert, um es auszuprobieren und dir helfen zu können. Da ist es schon ärgerlich, wenn der Code voller Fehler ist, die einen daran hindern, das eigentliche Problem zu lösen. Genauso ärgerlich ist es, wenn man dann alle gefundenen Fehler mit Lösung hier erwähnt und dann liest: darum gehts gar nicht, ich hab mir nur keine Mühe beim Schreiben des Beispiels gegeben. Ist nachzuvollziehen, denke ich.

-
_matze schrieb:
Na ja, aber mal grundsätzlich: wenn du hier ein Beispiel postest, musst du damit rechnen, dass sich das jemand kopiert, um es auszuprobieren und dir helfen zu können. Da ist es schon ärgerlich, wenn der Code voller Fehler ist, die einen daran hindern, das eigentliche Problem zu lösen. Genauso ärgerlich ist es, wenn man dann alle gefundenen Fehler mit Lösung hier erwähnt und dann liest: darum gehts gar nicht, ich hab mir nur keine Mühe beim Schreiben des Beispiels gegeben. Ist nachzuvollziehen, denke ich.

Okay, da ist was dran. Im Prinzip hat mein Beispiel aber nichts direktes mit menier Frage zu tun. Ich wollte nur kurz zeigen, wofür ich das im Prinzip nutzen möchte.
Ich werde GetClassName mal ausprobieren.