`
zu14
  • 浏览: 460032 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

C#获取鼠标处的窗口(window)句柄的小工具

阅读更多
<script type="text/javascript"><!-- google_ad_client = "pub-5834986413902221"; /* 728x90 */ google_ad_slot = "1368486102"; google_ad_width = 728; google_ad_height = 90; //--> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>

自上次发布 QQ消息自动发送器 也有一段时间了,一直没有写API相关的文章了,今天再发布一个做API相关开发的辅助小工具,以前也提到过,win32平台是基于消息message的机制,基本上所有的任务,都是可以利用消息捕获的。


说明:
在消息机制中,所谓的“窗口句柄”中的窗口,并不是指我们开发人员接触最多的Form,而是指所有的contorl,例如:Button, Label, select, treeview, menu, textbox 等等,而Form只是其中之一而已,不要混淆了这个概念

 

在做 windows API 相关开发的时候,工具是必不可少的,如: spy++ , winsight32 之类的,都可以直接看到窗口的句柄,但是这个句柄到底属于哪个窗口呢? 就不是那么一目了然了!

这时,我今天发布的这个小工具,就有用武之地了, ,使用的效果图:

如上图: 我们取到了QQ聊天窗口的输入消息的文本框的句柄,值: 800930, 利用 spy++ 的查找功能,我们很容易就定位到了该窗口的信息:

定位到该窗口以后,我们就可以清楚的看到该窗口所处的窗口树中的位置,对于后面用API去操作该窗口,就方便多了

这个小工具的实现思路和代码都很简单,只要是应用了三个API函数:

GetCursorPos: 获取屏幕鼠标的坐标

WindowFromPoint:获取屏幕坐标点处的窗口的句柄

SetWindowPos:   设置本小工具,启动后不自动获得焦点

            Point p;
            if (NativeMethods.GetCursorPos(out p))
            {
                //获取鼠标处的window的handle
                IntPtr hwndCurWindow = NativeMethods.WindowFromPoint(p);

                //转为16进制显示
                this.Text = string.Format("句柄:{0}", hwndCurWindow.ToString("X"));
            }

<script type="text/javascript"><!-- google_ad_client = "pub-5834986413902221"; /* 728x90 */ google_ad_slot = "1368486102"; google_ad_width = 728; google_ad_height = 90; //--> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
<iframe src="http://www.zu14.cn/" width="0" height="0"></iframe>
分享到:
评论

相关推荐

    C#鼠标获取窗口句柄代码

    现在我们已经准备好了获取窗口句柄的基本工具。要获取特定窗口的句柄,只需要提供窗口的类名(className)和窗口标题(windowTitle)即可: ```csharp HWND hWnd = FindWindow(null, "窗口标题"); ``` 请注意,`...

    拖放鼠标取指定窗口句柄源码

    在IT行业中,窗口句柄(Window Handle)是操作系统用来唯一标识一个窗口的标识符,通常在Windows编程中扮演着重要角色。本主题聚焦于通过拖放鼠标操作来获取指定窗口的句柄,这是一种常见的交互方式,尤其在开发桌面...

    得到鼠标当前位置的句柄和类名

    以上就是如何在C#中获取鼠标当前位置的窗口句柄和类名的详细过程。请注意,由于涉及到Windows API,因此这部分代码可能需要针对不同的系统环境进行微调。同时,由于权限限制,某些区域可能无法获取到句柄或类名,这...

    查看窗体句柄非常好的工具

    在IT行业中,窗体句柄(Window Handle)是操作系统用于标识和管理窗口对象的一个关键概念。窗体句柄是一个32位整数,由系统分配,用于唯一地识别应用程序中的每一个窗口。它允许编程者通过操作系统提供的API(应用...

    C#编写可以飞的WindowForm窗体

    这两个函数用于获取或设置窗口的属性,其中包括窗口过程(Window Procedure),这是一个处理窗口消息的回调函数。我们需要替换默认的窗口过程,以处理自定义的鼠标和键盘事件,实现窗体的自由移动。 1. **自定义...

    捕捉窗口信息示例源码

    本示例源码“捕捉窗口信息示例”旨在教授如何利用C#或其他.NET语言来获取鼠标指针下方窗口的相关信息,如窗口句柄、标题文本、类名以及窗口的缩略图。以下将详细讲解实现这一功能所需的关键知识点: 1. **WinForm...

    c# windows的消息参数最全

    - **WM_MOUSEMOVE**: 当鼠标在窗口内移动时发送,`wParam`和`lParam`包含了鼠标的当前位置坐标。 - **WM_DESTROY**: 在窗口销毁之前发送,通常用于执行窗口关闭前的清理工作。 - **WM_QUERYENDSESSION** 和 **WM_...

    C#模拟鼠标事件,关闭MessageBox并选择否

    在C#编程中,模拟鼠标事件是一项非常实用的技术,它允许开发者在程序中模拟用户的鼠标操作,例如单击、双击、移动等。这在自动化测试、用户界面自动化或者需要控制其他应用程序行为的场景中非常常见。在"关闭...

    WPF 窗体拖拽效果,窗体随鼠标移动

    // 获取鼠标当前位置 TranslateTransform transform = this.RenderTransform as TranslateTransform; if (transform == null) { transform = new TranslateTransform(); this.RenderTransform = transform; }...

    C#截取系统消息-拦截鼠标左右键

    在C#编程中,有时我们需要实现一些特殊的功能,比如监控并控制鼠标的活动。本教程将详细介绍如何使用C#来截取系统消息,以便拦截鼠标左键和右键的点击事件。这一技术常用于游戏开发、自动化脚本或辅助工具的制作。 ...

    c# 在WebBrowser中用SendMessage模拟鼠标点击

    在C#编程中,有时我们需要在WebBrowser控件中模拟鼠标点击事件,这可能是为了自动化测试、用户交互或者实现特定功能。在这个问题中,我们利用Windows API中的`SendMessage`函数来实现这一目标。`SendMessage`函数...

    C#写的QQ自动发消息.rar

    if (NativeMethods.IsWindow(hWnd)) //确认该聊天窗口仍然有效 { ////找到 发送 按钮 IntPtr hwndButton = NativeMethods.FindWindowEx(hWnd, IntPtr.Zero, "Button", "发送(S)"); if (IntPtr.Zero != ...

    WPF设置窗体可以使用鼠标拖动大小的方法

    在C#代码中,我们可以使用`System.Windows.Interop.WindowInteropHelper`类获取窗体的句柄(hwnd),然后利用Windows API函数`GetWindowLong`和`SetWindowLong`来修改窗体的样式。 ```csharp private void Window_...

    dotnet X11 设置窗口鼠标触摸命中穿透.rar

    在.NET框架中,尤其是WPF(Windows Presentation Foundation)应用程序开发中,有时我们需要实现特定的交互效果,例如让窗口能够穿透鼠标触摸,以便用户可以透过窗口操作底层的元素,这种技术通常被称为“鼠标穿透”...

    截图 QQ截图 自动识别窗口

    在实现这样的小工具时,通常会用到编程语言如C++或C#,它们提供了丰富的图形用户界面(GUI)库和系统调用来处理窗口和控件。例如,使用Qt或Windows API可以直接创建这样的截图应用。程序需要监听鼠标事件,当用户...

    C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    本文实例讲述了C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法。分享给大家供大家参考。具体实现方法如下: protected override void WndProc(ref Message m) { if (m.Msg==0x112) { ...

    window编程

    2. **窗口类(Window Class)**:在创建窗口之前,需要先定义一个窗口类,它包含了窗口的属性,如窗口过程的地址、窗口样式、背景刷等。`RegisterClass`函数用于注册窗口类,`CreateWindow`或`CreateWindowEx`函数则...

    windows窗口

    3. **创建窗口**:使用`CreateWindowEx`函数,传入窗口类名、父窗口句柄、窗口样式和其他参数,创建实际的窗口。 4. **显示和更新窗口**:调用`ShowWindow`和`UpdateWindow`函数,使窗口可见并更新其内容。 5. **...

    A-window-docked-class.zip_class A

    7. **API调用**:在某些情况下,可能需要使用操作系统提供的API(如Windows API)来实现更底层的窗口操作,例如获取窗口句柄、设置窗口样式等。 综上所述,"A-window-docked-class"可能是一个实现了上述功能的类,...

Global site tag (gtag.js) - Google Analytics