C#中利用Handle的操作

摘要:
C#中利用Handle的操作1.我新建了个窗体,窗体中放个Label,这个Label用来显示窗体的句柄。有一个不能用的话也没有关系吧。我获得了有道窗体的句柄“B09FC”,我把它转成16进制的了,这样:hwndCurWindow.ToString("X");于是我判断当句柄等于“B09FC”时,我就关掉窗体,我还要加入个关窗体的API:[DllImport]publicstaticexternboolCloseWindow;//然后我判断if{CloseWindow;}执行它,这时当我打开有道词典的时候,我的鼠标一放上去,窗体就关掉。我把它改成了一个Windows服务,让它在后台执行,好了,我再也不能使用有道了。

C#中利用Handle的操作

1.我新建了个窗体,窗体中放个Label,这个Label用来显示窗体的句柄。

2.拖个Timer控件到窗体中,设置属性Enable=true

3.代码里添加名字空间引用

  using System.Runtime.InteropServices;
  //加入获得Handle的API
[DllImport("user32.dll")]

internal static externIntPtr WindowFromPoint(Point Point);

//加入获得鼠标焦点的API
[DllImport("user32.dll")]

internal static extern bool GetCursorPos(out Point lpPoint);

4.写Timer的Tick事件,获取Handle

C#中利用Handle的操作第1张C#中利用Handle的操作第2张
  private void timer1_Tick(objectsender, EventArgs e)

  {

            Point p;

            if (GetCursorPos(outp))

            {

                IntPtr hwndCurWindow =WindowFromPoint(p);

                lblhandle.Text =hwndCurWindow.ToString();

            }

  }
View Code

5.执行它,晃动你的鼠标,当你的鼠标在各个窗体间切换的时候,label一直在变,这个就是获得的句柄。

6.有了句柄又怎么样呢,我也不知道获得了句柄想干嘛。我的机器上有两个翻译软件,金山词霸和有道。有一个不能用的话也没有关系吧。我获得了有道窗体的句柄“B09FC”,我把它转成16进制的了,这样:hwndCurWindow.ToString("X");于是我判断当句柄等于“B09FC”时,我就关掉窗体,我还要加入个关窗体的API:

  [DllImport("user32.dll")]

   public static extern boolCloseWindow(IntPtr hWnd);

//然后我判断

  if (hwndCurWindow.ToString("X") == "B09FC")

  {

          CloseWindow(hwndCurWindow);

  }

执行它,这时当我打开有道词典的时候,我的鼠标一放上去,窗体就关掉。

我把它改成了一个Windows服务,让它在后台执行,好了,我再也不能使用有道了。

这是winform的代码

C#中利用Handle的操作第3张C#中利用Handle的操作第4张
usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Text;

usingSystem.Windows.Forms;

 

usingSystem.Runtime.InteropServices;

 

namespaceHandleShow

{

    public partial classForm1 : Form

    {

        [DllImport("user32.dll")]

        internal static externIntPtr WindowFromPoint(Point Point);

        [DllImport("user32.dll")]

        internal static extern bool GetCursorPos(outPoint lpPoint);

        [DllImport("user32.dll")]

        public static extern boolCloseWindow(IntPtr hWnd);

 

 

        publicForm1()

        {

            InitializeComponent();

        }

 

        private void timer1_Tick(objectsender, EventArgs e)

        {

            Point p;

            if (GetCursorPos(outp))

            {

                IntPtr hwndCurWindow =WindowFromPoint(p);

                lblhandle.Text =hwndCurWindow.ToString();

                if (hwndCurWindow.ToString("") == "332106")

                {

                    CloseWindow(hwndCurWindow);

                }

 

            }

 

        }

    }

}
View Code

闲来无事,复习下API。网上搜来的,我只能说太强大了

免责声明:文章转载自《C#中利用Handle的操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Windows上搭建Git Server一次SQLServer数据库宕机问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)需求 登录界面: 1.要求 密码 文本可以显示和隐藏 字符 password属性 2.显示输入按钮button...

C#winform的textbox怎么设置滚动条

用 C#开发软件的时候文本框textbox是没有滚动条的,而且是单行文本。下面教大家如何设置多行,并且设置横向滚动条和垂直滚动条。 打开VS工具,创建一个winform窗体项目。系统会自动创建一个主窗体。在左边工具栏搜索textbox后,拉到窗体里面。 这个时候你看到一个单行文本框,右击文本框,点击属性,右边会显示文本框的属性窗口。选择MutilLine...

怎样能使winform窗体的大小固定住,不能调整其大小

窗体FormBorderStyle属性设置为:FixedSingle,再把最大化禁用就可以了 使用.Net编写Windows程序,对于窗体控制常见项目 属性:1、让窗体在启动时在指定位置出现 form1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) Window...

MFC避免窗口闪烁的方法(OnEraseBkgnd) .

在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图...

CDHtmlDialog探索----Javascript与窗体交互

CDHtmlDialog探索----Javascript与窗体交互 CDHtmlDialog提供了C++与网页的双向交互,通此一系统简单的宏调用可以把网页中各元素的事件直接映射到C++程序中,而在网页中调用C++功能代码就显的不那么直观了。归根结底交互的基理就是实现相应COM接口。实现方式如下: 1、在窗体初始化时调用EnableAutomation函数...

WeifenLuo.WinFormsUI.Docking.dll的用法

基本框架 说明 weiFenLuo.winFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可以实现像Visual Studio的窗口停靠、拖拽等功能。WeifenLuo.WinFormsUI.Docking是一个很强大的界面布局控件,可以保存自定义的布局为XML文件,可以加载XML配置文件。 该动态库源自开源项目...