Hallo,
Van een process probeer ik alle open formulieren/windows te vinden en hiervan de titel op te slaan. Dit werkt goed wanneer de Windows niet geminimaliseerd zijn (het maakt dus niet uit of ze wel of niet zichtbaar zijn). Wanneer ik het window echter minimaliseer is de tekst die ik terug krijg leeg.
Van het window kan ik ook de WindowInfo opvragen. Deze klopt dan wel (afmetingen van het formulier e.d.).
Heeft iemand enig idee hoe dit kan en hoe ik dit op moet lossen?
Zowel de lengte, als het resultaat van GetWindowText en GetWindowTextA zijn leeg. Dit werkt dus allemaal wel correct wanneer het formulier niet geminimaliseerd is.
Van een process probeer ik alle open formulieren/windows te vinden en hiervan de titel op te slaan. Dit werkt goed wanneer de Windows niet geminimaliseerd zijn (het maakt dus niet uit of ze wel of niet zichtbaar zijn). Wanneer ik het window echter minimaliseer is de tekst die ik terug krijg leeg.
Van het window kan ik ook de WindowInfo opvragen. Deze klopt dan wel (afmetingen van het formulier e.d.).
Heeft iemand enig idee hoe dit kan en hoe ik dit op moet lossen?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
| [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowText(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount); [DllImport("user32.dll", EntryPoint = "GetWindowTextLengthA")] public static extern int GetWindowTextLengthA(IntPtr hwnd); [DllImport("user32.dll", EntryPoint = "GetWindowTextA")] public static extern int GetWindowTextA( IntPtr hwnd, StringBuilder lpString, int cch ); |
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| private void MyEnumThreadWindowsProc(IntPtr hwnd, IntPtr lParam) { // Get the title and window info Win32.STRINGBUFFER limitedWindowTitle; Win32.WINDOWINFO windowInfo = new Win32.WINDOWINFO(); windowInfo.cbSize = (uint)Marshal.SizeOf(windowInfo); StringBuilder test = new StringBuilder(512); Win32.GetWindowText(hwnd, out limitedWindowTitle, 256); Win32.GetWindowInfo(hwnd, ref windowInfo); Win32.GetWindowTextA(hwnd, test, 256); System.Windows.Forms.MessageBox.Show(Win32.GetWindowTextLengthA(hwnd).ToString()); String windowTitle = limitedWindowTitle.szText; System.Windows.Forms.MessageBox.Show(windowTitle); } |
Zowel de lengte, als het resultaat van GetWindowText en GetWindowTextA zijn leeg. Dit werkt dus allemaal wel correct wanneer het formulier niet geminimaliseerd is.
...