获取当前鼠标所在的窗口句柄

合集下载

vb获取句柄的几种方式

vb获取句柄的几种方式

vb获取句柄的几种方式获取句柄是在VB中常见的操作之一,句柄可以用于标识和操作窗口、控制界面元素等。

下面将介绍几种常见的获取句柄的方式。

1. 使用FindWindow函数FindWindow函数可以根据窗口类名和窗口标题来查找窗口句柄。

可以使用以下代码获取窗口句柄:```vbDim hwnd As Longhwnd = FindWindow("窗口类名", "窗口标题")```其中,窗口类名是指窗口所属的类的名称,窗口标题是窗口上显示的文本。

2. 使用FindWindowEx函数FindWindowEx函数可以在指定窗口下查找符合条件的子窗口句柄。

可以使用以下代码获取子窗口句柄:```vbDim hwndParent As LongDim hwndChild As LonghwndParent = FindWindow("父窗口类名", "父窗口标题") hwndChild = FindWindowEx(hwndParent, 0, "子窗口类名", "子窗口标题")```其中,hwndParent是父窗口的句柄,hwndChild是子窗口的句柄。

3. 使用GetForegroundWindow函数GetForegroundWindow函数可以获取当前活动窗口的句柄。

可以使用以下代码获取当前活动窗口句柄:```vbDim hwnd As Longhwnd = GetForegroundWindow()```该函数不需要任何参数,直接调用即可。

4. 使用GetDesktopWindow函数GetDesktopWindow函数可以获取桌面窗口的句柄。

可以使用以下代码获取桌面窗口句柄:```vbDim hwnd As Longhwnd = GetDesktopWindow()```该函数不需要任何参数,直接调用即可。

VC获取鼠标所在位置窗口

VC获取鼠标所在位置窗口
2. 重定PreTranslateMessage函数 在此函数里当我们发现是WM_MOUSEMOVE消息时调用我们上面写的OnMouseMove函数。本函数代 码如下:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) {
if (pMsg->message==WM_MOUSEMOVE) {
CPoint point(LOWORD(pMsg->lParam),HIWORD(pMsg->lParam)); ::ClientToScreen(pMsg->hwnd,&amoint);
} return CDialog::PreTranslateMessage(pMsg); }
vc获取鼠标坐标vc获取鼠标位置vc获取子窗口句柄vc获取窗口大小vc获取窗口宽度vc获取窗口句柄vc获取窗口位置取鼠标所在窗口句柄vc获取系统时间vc获取当前时间
VC获取鼠标所在位置窗口
api
文档
2010
2011-05-06 13:25 1607人阅读 评论(0) 收藏 举报
编 号 : A3GS_TV20100122003
描述: 本文以实例代码的形式讲述了在VC中下实现鼠标所在位置窗口的获取。 例子代码: 请下载本文附带例子代码。 技术实现: 头文件:
#include < winuser.h> 技术说明:
实现本功能主要就是一个WindowFromPoint系统API的调用,本API的详细信息请参见MSDN相关文档。本文 以对话框窗口为例子一说明如果获取当前鼠标所在位置下的窗口信息。实现步骤如下:
1. 编写WM_MOUSEMOVE消息响应函数:
void CTestDlg::OnMouseMove(UINT nFlags, CPoint point) { CWnd * pWnd = WindowFromPoint(point); if (AfxIsValidAddress(pWnd,sizeof(CWnd))) if (::IsChild(m_hWnd,pWnd->m_hWnd)) { CString str; pWnd->GetWindowText(str); SetWindowText(str); } CDialog::OnMouseMove(nFlags, point); }

如何获得窗口句柄和改变窗口属性

如何获得窗口句柄和改变窗口属性

如何获得窗口句柄和改变窗口属性要获得窗口句柄(HWND),可以使用WinAPI中的FindWindow函数或FindWindowEx函数。

1. 使用FindWindow函数:```HWND hWnd = FindWindow(NULL, L"窗口标题");```这个函数会在当前活动的桌面窗口中查找指定标题的窗口,并返回窗口句柄。

2. 使用FindWindowEx函数:```HWND hParent = FindWindow(NULL, L"父窗口标题");HWND hWnd = FindWindowEx(hParent, NULL, NULL, L"子窗口标题");```这个函数会在指定父窗口中查找指定标题的子窗口,并返回子窗口句柄。

要改变窗口属性,可以使用WinAPI中的SetWindowLong函数或SetWindowPos函数。

1. 使用SetWindowLong函数:```LONG_PTR dwStyle = GetWindowLongPtr(hWnd, GWL_STYLE);dwStyle &= ~WS_CAPTION; // 移除标题栏SetWindowLongPtr(hWnd, GWL_STYLE, dwStyle);SetWindowPos(hWnd, NULL, x, y, width, height,SWP_FRAMECHANGED); // 重新绘制窗口```这个函数可以改变窗口的样式,如移除标题栏、调整窗口大小等。

2. 使用SetWindowPos函数:```SetWindowPos(hWnd, NULL, x, y, width, height,SWP_FRAMECHANGED);```这个函数可以重新设置窗口的位置、大小,并且可以实时更新窗口的样式。

需要注意的是,对于不属于当前进程创建的窗口,可能需要通过其他技术手段获取窗口句柄并改变属性,如使用钩子函数或其他进程间通信的方式。

按键精灵中如何获取窗口的标题

按键精灵中如何获取窗口的标题

Hwnd = Plugin.Window.Find(0, title)If Hwnd = 0 ThenRunApp ("c:\Program Files\SanGuoShaAIR\三国杀online桌面版\三国杀online桌面版.exe") Hwnd = Plugin.Window.Find(0, title)End IfDelay 4000// 移动到左上角Call Plugin.Window.Move(Hwnd, 0, 0)Plugin.Window.Active(Hwnd)// 等待 进入大厅 按钮的出现Call FindPicIn(432, 438, 589, 487, "Attachment:\enterhall.bmp", 0)/*Do While intX <= 0 And intY <= 0Plugin.Window.Active(Hwnd)Delay 1000FindPic 432, 438, 589, 487, "Attachment:\enterhall.bmp", 0.5, intX, intYLoop*/If intX > 0 And intY > 0 ThenMoveTo intX + 60, intY + 10LeftClick 1Delay 1000End If// 查找 登录游戏 按钮Call FindPicIn(363, 372, 490, 407, "Attachment:\login.bmp", 0)If intX > 0 And intY > 0 ThenMoveTo intX + 50, intY + 10LeftClick 1End If// 查找 脸谱,以确定是否已进入场区选择界面Call FindPicIn(114, 228, 185, 419, "Attachment:\face.bmp", 0)// 进入国战MoveTo 231, 455LeftClick 1Delay 1000MoveTo 444, 491LeftClick 1Delay 3000// 签到窗口// 点击 签到MoveTo 750, 145LeftClick 1/*// 关闭 签到成功 窗口MoveTo 517, 132LeftClick 1// 关闭 签到 窗口MoveTo 873, 101LeftClick 1*/Sub OnScriptExit()Call Plugin.Web.Tips("脚本停止运行") End Sub。

C#操作窗口类(句柄操作)

C#操作窗口类(句柄操作)

C#写个类操作窗口(句柄操作)实现过程:过程一:找到当前鼠标位置的句柄您的使用2个WinAPI(俺喜欢自己封装下来用):View Code[DllImport("user32.dll", EntryPoint = "GetCursorPos")] public static extern bool GetCursorPos(out Point pt);[DllImport("user32.dll", EntryPoint = "WindowFromPoint")] public static extern IntPtr WindowFromPoint(Point pt);//鼠标位置的坐标public static Point GetCursorPosPoint(){Point p = new Point();if (GetCursorPos(out p)){return p;}return default(Point);}///<summary>///找到句柄///</summary>///<param name="p">坐标</param>///<returns></returns>public static IntPtr GetHandle(Point p){return WindowFromPoint(p);}过程二:改变窗口的Text您的使用1个WinAPI:View Code[DllImport("user32.dll", EntryPoint = "SendMessage")]private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);///<summary>///给窗口发送内容///</summary>///<param name="hWnd">句柄</param>///<param name="lParam">要发送的内容</param>public static void SetText(IntPtr hWnd, string lParam){SendMessage(hWnd, WM_SETTEXT, IntPtr.Zero, lParam);}private const int WM_SETTEXT = 0x000C;通过这个方法就能改变Text的值了。

如何通过句柄获取外部程序的窗口的内容

如何通过句柄获取外部程序的窗口的内容

如何通过句柄获取外部程序的窗口的内容要通过句柄获取外部程序的窗口内容,可以使用Windows API函数来实现。

具体步骤如下:
1. 使用Windows API函数`FindWindow`或`FindWindowEx`来查找目标窗口的句柄。

`FindWindow`可以根据窗口类名或窗口标题查找句柄,`FindWindowEx`可以根据父窗口句柄和窗口类名查找句柄。

如果获取到了目标窗口的句柄,继续下一步;否则,表示未找到目标窗口。

2. 使用Windows API函数`GetWindowTextLength`和
`GetWindowText`来获取目标窗口的文本内容。

`GetWindowTextLength`用于获取文本内容的长度,`GetWindowText`用于获取实际文本内容。

可以先使用`GetWindowTextLength`来获取文本长度,然后创建一个对应长度的缓冲区,再使用`GetWindowText`来获取文本内容。

3. 可以使用其他Windows API函数来获取窗口的其他信息,如
`GetClassName`获取窗口的类名,`GetWindowRect`获取窗口的位置和大小等。

需要注意的是,使用Windows API函数需要导入`user32.dll`库,并且可以使用C++、C#、Python等编程语言进行开发。

使用不同编程语言,具体API函数的调用方式会有所差异。

VC++编程获取窗口句柄的方法小结

VC++编程获取窗口句柄的方法小结

VC++编程获取窗⼝句柄的⽅法⼩结
本⽂实例讲述了VC++编程获取窗⼝句柄的⽅法。

分享给⼤家供⼤家参考,具体如下:
在VC++编程中常需获取控件或窗体句柄,下⾯总结了⼏种⽅法,还希望⼤家能多多补充。

1、⾃⾝窗⼝句柄可⽤AfxGetMainWnd获取。

2、系统中其他APP的窗⼝句柄可⽤FindWindow获取(⽤SPY帮⼀下忙).
HWND hBtnClose;
HWND hWnd=::FindWindow(NULL,"腾讯QQ系统⼴播");
if(hWnd)
{
hBtnClose=GetDlgItem(hWnd,2);
if(hBtnClose)
PostMessage(hBtnClose,BM_CLICK,NULL,NULL);
}
3、通过指针获取窗⼝句柄
HWND hwnd = pwnd->m_hwnd; //得到它的HWND,对象或指针都可以
4、当我们想得到⼀个窗⼝对象(CWnd的派⽣对象)指针的句柄(HWND)时,最安全的⽅法是使⽤GetSafeHwnd()函数;
5、
HWND GetDlgltem(HWND hDlg,int nlDDlgltem);
6、通过控件ID号获取。

CListCtrl* pleftList = (CListCtrl* )GetDlgItem(IDC_LIST1);
pleftList->GetSafeHandl();
希望本⽂所述对⼤家VC++程序设计有所帮助。

c#获取鼠标处窗口句柄,程序嵌入桌面

c#获取鼠标处窗口句柄,程序嵌入桌面

c#获取鼠标处窗口句柄,程序嵌入桌面using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices; namespace WindowsApplication1{public partial class Form1 : Form{public Form1(){InitializeComponent();}const int GW_HWNDFIRST = 0; //{同级别 Z 序最上} const int GW_HWNDLAST = 1; //{同级别 Z 序最下} const int GW_HWNDNEXT = 2; //{同级别 Z 序之下} const int GW_HWNDPREV = 3; //{同级别 Z 序之上} const int GW_OWNER = 4; //{属主窗口}const int GW_CHILD = 5; //{子窗口中的最上} [DllImport("user32.dll", EntryPoint = "FindWindow")] public static extern int FindWindow(string lpClassName,string lpWindowName);[DllImport("user32.dll", EntryPoint = "GetWindow")]//获取窗体句柄,hwnd为源窗口句柄/*wCmd指定结果窗口与源窗口的关系,它们建立在下述常数基础上:GW_CHILD寻找源窗口的第一个子窗口GW_HWNDFIRST为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口GW_HWNDLAST为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口GW_HWNDNEXT为源窗口寻找下一个兄弟窗口GW_HWNDPREV为源窗口寻找前一个兄弟窗口GW_OWNER寻找窗口的所有者*/public static extern int GetWindow(int hwnd,int wCmd);[DllImport("user32.dll", EntryPoint = "SetParent")]//设置父窗体public static extern int SetParent(int hWndChild,int hWndNewParent);[DllImport("user32.dll", EntryPoint = "GetCursorPos")]//获取鼠标坐标public static extern int GetCursorPos(ref POINTAPI lpPoint);[StructLayout(LayoutKind.Sequential)]//定义与API相兼容结构体,实际上是一种内存转换public struct POINTAPI{public int X;public int Y;}[DllImport("user32.dll", EntryPoint = "WindowFromPoint")]//指定坐标处窗体句柄public static extern int WindowFromPoint(int xPoint,int yPoint);private void timer1_Tick(object sender, EventArgs e){POINTAPI point = new POINTAPI();//必须用与之相兼容的结构体,类也可以GetCursorPos(ref point);//获取当前鼠标坐标int hwnd = WindowFromPoint(point.X, point.Y);//获取指定坐标处窗口的句柄bel1.Text =point.X.T oString() + ":" + point.Y.ToString() + "-" + hwnd.T oString();//显示效果,此时窗口已经嵌入桌面了}const int GW_CHILD = 5;//定义窗体关系private void Form1_Load(object sender, EventArgs e){int hDesktop = FindWindow("Progman", null);//获取系统句柄hDesktop = GetWindow(hDesktop, GW_CHILD);//获取其子窗口句柄,就是桌面的句柄SetParent((int)this.Handle, hDesktop);//设置父窗体,第一个为要被设置的窗口,第二个参数为指定其父窗口句柄}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用到的API函数:
GetCursorPos
基本信息
函数功能:该函数检取光标的位置,以屏幕坐标表示。

函数原型:BOOL GetCursorPos(LPPOINT lpPoint);
参数:
IpPoint:POINT结构指针,该结构接收光标的屏幕坐标。

使用时要先定义一个数据结构:
Public Type POINTAPI
x As Long
y As Long
End Type
例如:
dim biao as POINTAPI
GetCursorPos biao
那么biao.x用来存放当前光标的x轴坐标,biao.y用来存放当前y轴的坐标。

返回值:如果成功,返回值非零;如果失败,返回值为零。

若想获得更多错误信息,请调用GetLastError函数。

备注:
1.光标的位置通常以屏幕坐标的形式给出,它并不受包含该光标的窗口的映射模式的影响。

该调用过程必须具有对窗口站的WINSTA_READATTRIBUTES访问权限。

2.此函数为api函数,调用时要函数声明:Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;库文件:user32.lib。

WindowFromPoint
函数功能:该函数获得包含指定点的窗口的句柄。

函数原型:HWND WindowFromPoint(POINT Point);
参数:
Point:指定一个被检测的点的POINT结构。

返回值S:返回值为包含该点的窗口的句柄。

如果包含指定点的窗口不存在,返回值为NULL。

如果该点在静态文本控件之上,返回值是在该静态文本控件的下面的窗口的句柄。

备注:WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内。

应用程序应该使用ChildWindowFromPoint函数进行无限制查询,这样就可以获得静态文本控件的句柄。

速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本:头文件:Winuser.h;库文件:user32.lib。

获取当前鼠标所在的窗口句柄代码:
POINT pNow = {0,0};
If (GetCursorPos(&pNow))
{
HWND hwndPointNow = NULL;
hwndPointNow = WindowFromPoint(pNow);
if (hwndPointNow)
cout <<“Success!!”<< endl;
else
cout <<“Error!!”<< endl;
}
else
cout <<“Error!!”<< endl;。

相关文档
最新文档