Guten Abend,
ich probiere gerade bei einem externen Programm in C# eine ListBox anzusteuern.
In dieser ListBox befinden sich beliebig viele CheckBox-Items. Ich würde gerne z.B. die zweite CheckBox anwählen.
Das Handle der ListBox zu finden war kein Problem. Dann habe ich es mit SendMessage (SETCURSEL) probiert auszuwählen.
Leider ohne Erfolg. Vielleicht weiß jemand weiter? Danke!
ich probiere gerade bei einem externen Programm in C# eine ListBox anzusteuern.
In dieser ListBox befinden sich beliebig viele CheckBox-Items. Ich würde gerne z.B. die zweite CheckBox anwählen.
Das Handle der ListBox zu finden war kein Problem. Dann habe ich es mit SendMessage (SETCURSEL) probiert auszuwählen.
Leider ohne Erfolg. Vielleicht weiß jemand weiter? Danke!
C#-Quellcode
- private void button2_Click(object sender, EventArgs e)
- {
- IntPtr chldWnd = NativeMethods.FindWindow("#32770", "Ansichten einfügen");
- IntPtr ListBoxHandle = NativeMethods.FindWindowEx(chldWnd, IntPtr.Zero, "ListBox", null);
- //MessageBox.Show(ListBoxHandle.ToString());
- NativeMethods.PostMessageInt(ListBoxHandle, NativeMethods.CB_SETCURSEL, 1, 2);
- }
- }
- }
- static class NativeMethods
- {
- public const int BM_CLICK = 0x00F5;
- public const int WM_SETTEXT = 0x000C;
- public const int VK_DOWN = 0x28;
- public const int WM_KEYDOWN = 0x100;
- public const int LB_SETSEL = 0x0185;
- public const int CB_SETCURSEL = 0x014E;
- [DllImport("user32.dll", CharSet = CharSet.Unicode)]
- public static extern IntPtr SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);
- [DllImport("user32.dll", CharSet = CharSet.Unicode)]
- public static extern IntPtr PostMessage(IntPtr hwnd, int wsg, IntPtr wParam, String lParam);
- [DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Unicode)]
- public static extern IntPtr PostMessageInt(IntPtr hWnd, uint Msg, int wParam, int lParam);
- [DllImport("user32.dll", CharSet = CharSet.Unicode)]
- public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
- [DllImport("user32.dll", SetLastError = true)]
- public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
- }