Hey StageTwo,
zwar habe ich zurzeit recht wenig Zeit, jedoch stelle ich euch hiermit ein kleines Snippet vor, mit dem man recht simpel den Inhalt eines Fensters auslesen kann. Grund dafür waren einige Anfragen von Membern aus diesem Forum.
Hilfreiche Programme/Tools:
Microsoft Spy++ | Download: Klick
Snippet:
Benötigte API's / Enums / Konstanten
- [DllImport("user32.dll", SetLastError = true)]
- static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, [Out] StringBuilder lParam);
- [DllImport("user32.dll", SetLastError = true)]
- static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);
- enum GetWindow_Cmd : uint
- {
- GW_HWNDFIRST = 0,
- GW_HWNDLAST = 1,
- GW_HWNDNEXT = 2,
- GW_HWNDPREV = 3,
- GW_OWNER = 4,
- GW_CHILD = 5,
- GW_ENABLEDPOPUP = 6
- }
- const int WM_GETTEXTLENGTH = 0x0E;
- const int WM_GETTEXT = 0x0D;
Anwendung am Beispiel vom pSRO mBot (Statistic am rechten Rand)
- IntPtr hwnd = p.MainWindowHandle; //MainWindow handle besorgen |p ist der Prozess des Fensters
- IntPtr hwndStats = FindWindowEx(hwnd, IntPtr.Zero, "Static", null); //Auf Basis des MainWindow handles den WinEx handle besorgen
- int textLen = (int)SendMessage(hwndStats, WM_GETTEXTLENGTH, IntPtr.Zero, null); //Auf Basis des handles die Textlänge ermitteln
- StringBuilder sb = new StringBuilder(textLen); //StringBuilder initialisieren, um den Fenstertext zu speichern (Länge entspricht der Textlänge des Fensterinhalts)
- SendMessage(hwndStats, WM_GETTEXT, (IntPtr)sb.Capacity, sb); //Fensterinhalt besorgen
- String windowText = sb.ToString();
Hinweiß
Hin und wieder wird es ein wenig tricky werden, da ihr auch noch mit den GetWindow Konstanten wie "GW_HWNDNEXT" arbeiten werden müsst. Den Rest überlass ich euch erstmal. Bei Fragen oder Hilfestellungen könnt ihr euch gerne melden. Ich werde versuchen so schnell wie möglich zu antworten, auch wenn meine Zeit zurzeit ziemlich begrenzt ist.
Sorry für die fehlende Ausfühlichkeit.
Kuh :>