【精选】通过获取窗口句柄模拟键鼠点击的一些方法

您所在的位置:网站首页 按键精灵怎么在特定窗口显示 【精选】通过获取窗口句柄模拟键鼠点击的一些方法

【精选】通过获取窗口句柄模拟键鼠点击的一些方法

#【精选】通过获取窗口句柄模拟键鼠点击的一些方法| 来源: 网络整理| 查看: 265

目的:

实现能自动在窗口中实现鼠标点击与键盘输入的操作(以QQ自动发送某些为例)

语言:

C/C++

实现原理:

一、窗口句柄(HWND): 【1】 每个程序窗口都有一个窗口句柄,在程序的一次运行中句柄是不会发生变化的(每当重新开启程序后句柄会发生改变),句柄的类型为HWND 【2】 我们可以用VS自带的Spy++工具获取窗口句柄,窗口类名,与标题 【2.1】 比如下图我们“记事本”的 窗口句柄是:00030B24 窗口类名是:Notepad 窗口标题是:新建文本文档.txt - 记事本 查找记事本句柄 【2.2】 在窗口句柄下还有子窗口句柄,比如编辑框的句柄为:00060B0E ,类名为:Edit 子窗口句柄Edit 【3】 ※在我们通过使用Spy++工具后能查到窗口的类名与标题。在代码编写中,通过例如 FindWindow 这样的函数可以查找并返回对应窗口的句柄值,并将其赋予窗口句柄(HWND)类型的变量中,在接下来的代码中引用。

【3.1】使用FindWindow函数查找窗口句柄

函数原型:HWND FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName); 其中:lpClassName参数指向类名,lpWindowName指向窗口名,如果有指定的类名和窗口的名字则表示成功返回一个窗口的句柄。否则返回零。(类名与窗口名至少知道一个就可以进行查找)

例:获得窗口 HWND h = FindWindow(L"Notepad", NULL); HWND h = FindWindow(NULL, L"新建文本文档.txt - 记事本"); 在这里通过Spy++查找窗口的类名,知道了记事本窗口的类名Notepad,则可成功查找(或者使用窗口标题) 在这里插入图片描述 【3.2】代码

#include #include //使用HWND的头文件 using namespace std; int main() { HWND h; h = FindWindow(L"Notepad", NULL); cout EmptyClipboard(); SetClipboardData(CF_BITMAP, hBmp); CloseClipboard(); } //QQsend(); ReleaseDC(h, hDC); DeleteDC(hCaptureDC); DeleteObject(hCaptureBitmap); } 实现代码(不完善的):

这个函数前面是通过句柄获得了某个窗口的截图,并将其放入了剪贴板中。 接下来是要将截图发送到qq的某个人 注:这里面使用的是腾讯的TIM软件,windows系统 注:使用时要保证要发送的那个人是在窗口最前

void QQsend() { HWND h = FindWindow(L"TXGuiFoundation", L"鸽"); RECT rect; GetWindowRect(h, &rect); ShowWindow(h, SW_RESTORE); //激活h窗口 SetFocus(h); //设置当前窗口为焦点 SetForegroundWindow(h); //指定窗口的线程设置到前台,激活该窗口。键盘输入转向该窗口 cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3