首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

已经获取到窗体句柄,如何根据该句柄获取到某一个控件的句柄呢

2012-06-21 
已经获取到窗体句柄,怎么根据该句柄获取到某一个控件的句柄呢?假设这个窗体的句柄是mainFrmIntPtr 我怎么

已经获取到窗体句柄,怎么根据该句柄获取到某一个控件的句柄呢?


假设这个窗体的句柄是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一样,一般没有句柄。模拟按键吧。

热点排行