已经获取到窗体句柄,怎么根据该句柄获取到某一个控件的句柄呢?
假设这个窗体的句柄是mainFrmIntPtr 我怎么获取到 自动开始 那个按钮的句柄.
我的目的就是发送一个窗体消息,实现单击 自动开始 按钮的效果.
我是用C#调用User32.dll的函数来实现发送窗体消息的.
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
IntPtr i = FindWindowEx(mainFrmIntPtr, IntPtr.Zero, null, "&C 控制");
结果i等于0.哪儿有问题?
------解决方案--------------------不行就继续枚举
[DllImport("user32.dll")]
public static extern int EnumChildWindows(IntPtr hWndParent, EnumWindowsProc ewp, int lParam);
public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);
------解决方案--------------------用 spy++ 看看具体的关系,然后逐层使用FindWindowEx
------解决方案--------------------用SendKeys.Send模拟按键
------解决方案--------------------没有句柄,这种菜单或者工具栏里的菜单或者按钮,都是画出来的,像Label一样,一般没有句柄。模拟按键吧。