Button in Fremdanwendung ausblenden
-
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

-
So er hat nun alle Controls durchlaufen, aber scheinbar hat er nen Prob mit der Caption oder die Buffer deklaration ist falsch bzw. ich werte sie falsch aus

-
Du kannst nicht einfach == für den Vergleich nehmen, sondern brauchst spezielle Funktionen, wie z.B. lstrcmp dafür
