您的位置:首页 > 其它

如何获得.net控件的windows句柄

2012-10-21 13:36 309 查看

有一个简单的获得控件的句柄的窍门。你将窗体设置为鼠标可捕获,那么你的窗口句柄可以通过使用Windows API捕获。 这个想法在以下的GetHWnd函数中实现:

class WinAPI

{

  [DllImport("coredll.dll")]

  private static extern IntPtr SetCapture(IntPtr hWnd);

  [DllImport("coredll.dll")]

  private static extern IntPtr GetCapture();

  public static IntPtr GetHWnd(Control ctrl)

  {

    IntPtr hOldWnd = GetCapture();

    ctrl.Capture = true;

    IntPtr hWnd = GetCapture();

    ctrl.Capture = false;

    SetCapture(hOldWnd);

    return hWnd;

  }

}

这是GetHWnd函数的简单用法:

  IntPtr hWndButton = WinAPI.GetHWnd(button1);

本文转载于:/article/5422692.html

PS:个人觉得这个方法并不好,饶了大圈子。Control本身有一个Handle属性,所以在控件触发事件中可以这样完成获取控件句柄,比如button的点击事件

private void StartBtn_Click(object sender, EventArgs e)//这里的sender就是一个Object类型的对象,它就是当前的控件,因此一句话搞定

{

IntPtro hWnd = ((Control)sender).Handle;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: