首页 > 技术文章 > 按键精灵

Full--Stack 2017-12-15 10:58 原文

取窗口句柄
Global DDO, WX1, WX2, WY1, WY2, X, Y,  Mouse1, Mouse2, Mouse3,   ZhuXian, Speed, i, j,  m, n, p
DDO = Plugin.Window.Foreground()    //得到当前窗口(DDO)的句柄
sRect = Plugin.Window.GetClientRect(DDO)  //得到DDO窗口客户区的大小
MyArray = Split(sRect, "|")   //分割窗口大小的字符串
WX1 = Clng(MyArray(0)): WY1 = Clng(MyArray(1))  //将分割的字符串分别赋值给变量
WX2 = Clng(MyArray(2)) : WY2 = Clng(MyArray(3))
X = WX2 / 2 + WX1    //得到DDO窗口客户区横向中心点坐标
Y = WY2 / 2 + WY1//得到DDO窗口客户区纵向中心点坐标
MessageBox  "x1["& WX1 &"]y1["& WY1 &"]| x2["& WX2 &"]y2["& WY2 &"]"

画准星
Declare Function 取设备句柄 Lib "user32" Alias "GetWindowDC" (ByVal hwnd As Long) As Long
Declare Function 创建画笔对象 Lib "gdi32" Alias "CreatePen" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Declare Function 选入场景 Lib "gdi32.dll" Alias "SelectObject" (ByVal hwnd As Long,ByVal hwnd As Long) As Long
Declare Function 指定画笔位置 Lib "gdi32" Alias "MoveToEx" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal x As Long) As Long
Declare Function 画直线 Lib "gdi32" Alias "LineTo" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Declare Function 删除对象 Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Long) As Long
//取设备句柄(窗口句柄)[返回设备句柄,整数型]
//创建画笔对象(类型,宽度,颜色)[返回对象句柄]
//选人场景(设备句柄,场景句柄)
//指定画笔位置(设备句柄,X,Y,坐标结购)
//画直线(设备句柄,终点X,终点Y)
//删除对象(对象句柄)
宽度 = Plugin.Sys.GetScRX()//此例程为在桌面屏幕画准心,所以取的是屏幕分辩率
高度 = Plugin.Sys.GetScRY()
设备句柄 = 取设备句柄(0)//窗口句柄为0时,取屏幕设备句柄,如在指定窗口画就填写窗口句柄
对象句柄 = 创建画笔对象(1, 2, 255)//参数1为类型,参数2为线条粗细,参数3为10进制的颜色值(255是红色)
TracePrint  选入场景(设备句柄, 对象句柄)//此操作相当于windows画图时鼠标选择了画笔按钮。
TracePrint  指定画笔位置(设备句柄,宽度\2-50,高度\2,0)//坐标结构不要使用,按键不支持此数据类型
TracePrint 画直线(设备句柄, 宽度 \ 2 + 50, 高度 \ 2)//画横线
TracePrint  指定画笔位置(设备句柄,宽度\2,高度\2-50,0)//坐标结构不要使用,按键不支持此数据类型
TracePrint 画直线(设备句柄, 宽度 \ 2, 高度 \ 2 + 50)//画竖线
TracePrint 删除对象(对象句柄)'画完以后记得释放对象,如果需要一直画就不要释放,循环重复以上4行


来自为知笔记(Wiz)


推荐阅读