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

来源:互联网 发布:水树凯一日知秋 编辑:程序博客网 时间:2024/06/17 06:21

 

有一个简单的获得控件的句柄的窍门。你将窗体设置为鼠标可捕获,那么你的窗口句柄可以通过使用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);

本文转载于:http://www.cnblogs.com/kkenn/archive/2010/02/08/1665755.html

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

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

       {

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

       }

原创粉丝点击