Button in Fremdanwendung ausblenden
-
Hi,
ich möchte von einer Fremdanwendung einen bestimmten Button ausblenden.
Nun folgendes Problem:
Die Buttons (9 an der Zahl) sind zunächst von der gleichen Klasse (verständlich), aber leider lässt sich nicht die Caption extrahieren um den Handler zu dem entsprechenden Button zu ermitteln. Gibt es da noch eine andere Lösung? Bitte helft mir..
grüße cable
-
...mit Spy++ oder WinSpector nach der ID des Buttons schauen

-
Hmm das klingt schon mal gut und dann über GetDlgItem den Handler ermitteln oder?
-
Yeah, über WinSpector konnte ich erst die ID ermitteln und mit GetDlgItem den Handler! Es funzt! Danke Dir/Euch
-
Leider blieb meine Freude nur von kurzer Dauer, die ID des buttons ändert sich leider bei jedem Start der Fremdanwendung

-
Du brauchst aber irgend etwas, das konstant bleibt - ID, Caption, Position oder zur Not eben die Anzahl der davorliegenend Child-Fenster (bei EnumChildWindows bzw. FindWindowEx) - sonst wüsste ich nicht, wie du drankommen willst.
-
Ok dann versuch ich das mal!
Das lustige ist, das die Steuerelementen ID = Steuerelementen Handle ist.
Also alles sehr kurios..
-
Das hört sich nach einem Delphi Programm an, welches mit der VCL erstellt wurde.
-
Jo Winspector gibt mir was mit Delphi bei dem Buttons zurück!
-
Dann hilft nur noch ein: Mit EnumChildWindows alle Buttons durchgehen und die Beschriftung vergleichen. Die Fensterklasse ist TButton bei VCL Anwendungen.
-
Hmm das könnte ich tuen, obwohl ich mir nicht sicher bin ob ich die Caption der Buttons extrahiert bekomme, denn weder Spy++,Winspector oder X-Spy konnte die Caption extrahieren.
-
Hmm wenn ich wüsste wie ich die reellen Left und Top werte von einem dieser Buttons ermitteln könnte, könnte ich per ChildWindowFromPoint den Handler leichter ermitteln ;P
-
gekommst noch ein tip, es ginge wahrscheinlich auch mit:
FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
-
Danke Nox, leider lässt sich der Handler des Buttons nicht ermitteln, da er keine Caption ausspuckt bzw. hat!
-
Irgendwie is heut nich mein Tag, der durchläuft das EnumChildWindows nur 1 mal
//Ausschnitt aus der Message Schleife inkl. WM_COMMAND Message hwndPXButton = FindWindowEx(hwndPX, 0, "TSeSkinButton", NULL); //hwndPX = Handle vom TMainForm der Anwendung if (EnumChildWindows(hwndPX,EnumChildWindowsProc,0)) { ShowWindow(hwndPXButton,SW_HIDE); } break; default: /* for messages that we don't deal with */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } //CALLBACK Function von EnumChildWindows BOOL CALLBACK EnumChildWindowsProc(HWND hwndChild, LPARAM lParam) { int a=0; char sWindowText[]=""; TCHAR buffer[255]; ZeroMemory(buffer,255*sizeof(TCHAR)); GetWindowText(hwndChild, buffer, 255); if (buffer=="SMS-Center") { hwndPXButton=hwndChild; } return FALSE; }
-
Wie könnte man das ganze denn angehen (sry bin Umsteiger von VB auf C++)

-
Zeig mal deine Code-Versuche

-
Sry, wenn das etwas chaotisch aussieht und manche variablen sinnfrei im raum stehen *g* Aber ich beiß mir echt die Zähne an den sch**ß Buttons aus

Da oben könnt ihr meine Code Versuche betrachten.
-
To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE.
-
Licht aufgeh, wer lesen kann ist klar im Vorteil
