- 初中三年级
- 2220985
- 396
- 0
- 532 朵
- 2506 个
- 334 个
- 480
- 2013-10-27
|
1#
t
T
发表于 2014-11-18 16:20
|
|只看楼主
控件实现抓抓获取句柄的功能 本文由按键学院提供技术支持 ▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂__▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂▂_▂▂_▂▂
在论坛上看到了一个这样的问题: 能不能添加一个类似 “抓抓” 抓句柄那样的控件? - 您所在的用户组无法下载或查看附件
有了这个控件,咱们可以放在QUI界面上,让用户自己获取窗口句柄,那么,通用同步器这类的脚本实现起来就轻松多了。
(ps:通用同步器是指能够兼容多种游戏窗口键鼠同步功能,也就是说没办法预先知道窗口的类名,标题名去获取窗口句柄,这个时候,抓抓句柄功能就很重要了。) 其实呢,“抓抓”抓句柄的功能,实现起来是很容易的,我们一起来操作看看。
|
▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂__▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂▂_▂▂_▂▂ |
[backcolor=rgb(46, 139, 87)]修改光标要使用的api函数[backcolor=rgb(154, 205, 50)]
函数 | SetSystemCursor | 函数功能 | 该函数使一个应用程序定制系统光标。 | 函数声明 | Public Declare Function SetSystemCursor Lib "user32" Alias "SetSystemCursor" (ByVal hcur As Long, ByVal id As Long) As Long | 函数语法 | SetSystemCursor(hCur, id) | 参数说明 | hcur:替换的光标句柄。 id: 被替换的系统光标标识符。
|
函数 | LoadCursorFromFile | 函数功能 | 在一个指针文件或一个动画指针文件(扩展名分别是.cur和.ani)的基础上创建一个指针。 //白话解释就是:获取一个光标文件的句柄 | 函数声明 | Public Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long | 函数语法 | LoadCursorFromFile("c:\变化.cur") //引号中为光标文件所在地址 |
函数
| SystemParametersInfo | 函数功能 | 该函数使一个应用程序定制系统光标。 | 函数声明 | Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) | 函数语法 | SystemParametersinfo(uiAction, uiParam,pvParam, fWinlni) | 参数说明 | uiAction: 该参数指定要查询或设置的系统级。 本例子中,这个参数要取值为:SPI_SETCURSORS 功能:重置系统光标。将ulParam参数设 为0并且pvParam参数设为NULL。 ulParam: 与查询或设置的系统参数有关。关于系统级参数的详情。 pvParam: 与查询或设置的系统参数有关。关于系统级参数的详情。 fWinlni: 如果设置系统参数,则它用来指定是否更新用户配置文件(Profile)。亦或是否要将 WM_SETTINGCHANGE消息广播给所有顶层窗口,以通知它们新的变化内容。 本例子中,这个参数要取值为 :SPIF_SENDCHANGED 功能:在更新用户配置文件之后广播消息。 |
[backcolor=rgb(46, 139, 87)]判断鼠标左键按下的api函数[backcolor=rgb(154, 205, 50)]
函 数 | GetAsyncKeyState | 函数功能 | 用来判断函数调用时指定虚拟键的状态。 | 函数声明 | Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer | 返回值 | GetAsyncKeyState 返回值等于1 说明键已经被按过并且当前是松开的状态 GetAsyncKeyState 返回值等于0 说明键是松开的状态 GetAsyncKeyState 返回值等于- 32767 说明键是按下的状态
|
- Public Declare Function SetSystemCursor Lib "user32" Alias "SetSystemCursor" (ByVal hcur As Long, ByVal id As Long) As Long
- Public Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
- Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)
- Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
复制代码 [backcolor=rgb(46, 139, 87)]修改光标形状-代码[backcolor=rgb(154, 205, 50)] - hCursor = LoadCursorFromFile("c:\变化.cur")'获取光标的句柄 //api加载光标文件,不能直接加载按键附件中的文件,需释放到电脑盘符中
- Call SetSystemCursor(hCursor, 32512) //设置光标形状 32512是系统标准光标OCR_NORMAL的常数。
复制代码 [backcolor=rgb(46, 139, 87)]恢复光标形状-代码[backcolor=rgb(154, 205, 50)] - SystemParametersInfo 87, 0, 0, 2
- // 第一个 87是 SPI_SETCURSORS 的常数。第一个参数设置为SPI_SETCURSORS,第二个和第三个参数都设置为0. 第三个参数 2 是 SPIF_SENDCHANGED 的常数。
复制代码 [backcolor=rgb(46, 139, 87)]判断鼠标左键是否弹起[backcolor=rgb(154, 205, 50)] - LButton = GetAsyncKeyState(1) '鼠标左键状态
- If LButton =0 Then //如果鼠标左键松开
- //
- End If
复制代码 |
▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂__▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂▂_▂▂_▂▂
咱们的核心代码都分析完了,现在将这些代码组合起来,看看运行效果会是怎样的。 |
[backcolor=rgb(46, 139, 87)]代码 [backcolor=rgb(46, 139, 87)]
- Public Declare Function SetSystemCursor Lib "user32" Alias "SetSystemCursor" (ByVal hcur As Long, ByVal id As Long) As Long
- Public Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
- Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)
- Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
- Event Form1.Timer1.Timer
- LButton = GetAsyncKeyState(1) '鼠标左键状态
- //RButton =GetAsyncKeyState(2) '鼠标右键状态
- If LButton =0 Then //如果鼠标左键松开
- hwnd=Plugin.Window.MousePoint()
- Form1.Label1.Caption = hwnd
- Form1.PictureBox1.Picture = "Attachment:\光标2.jpg" //图像控件图像改为光标2.jpg
- SystemParametersInfo 87, 0, 0, 2 //还原光标形状
- Form1.Timer1.Enabled = False
- End If
- End Event
- Event Form1.PictureBox1.Click
- hCursor = LoadCursorFromFile("c:\变化.cur")'获取光标的句柄 //api加载光标文件,不能直接加载按键附件中的文件,需释放到电脑盘符中
- Call SetSystemCursor(hCursor, 32512) //设置光标形状
- Form1.Timer1.Enabled = True
- Form1.PictureBox1.Picture="Attachment:\光标1.jpg" //图像控件图像改为光标1.jpg
- End Event
- Event Form1.Load
- PutAttachment "c:\","变化.cur" //释放光标文件
- End Event
复制代码 |
[backcolor=rgb(46, 139, 87)]效果[backcolor=rgb(154, 205, 50)]
- 您所在的用户组无法下载或查看附件
录制的时候光标是录制软件的光标,看不到效果。上传Q文件,有兴趣的童鞋可以下载看看。Q文件下载:- 您所在的用户组无法下载或查看附件
- 您所在的用户组无法下载或查看附件
- 您所在的用户组无法下载或查看附件
2个月学会赚大钱的脚本 按键学院实战班
|