
怎么绑定,大漠接口说明里说得清清楚。
学习任何东西都要自己多动手动脑,你才能记得住。
函数简介:
绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大
函数原型:
long BindWindow(hwnd,display,mouse,keypad,mode)
参数定义:
hwnd: 指定的窗口句柄
display: 屏幕颜色获取方式 取值有以下几种
"normal" : 正常模式,平常我们用的前台截屏模式
"gdi" : gdi模式,用于窗口采用GDI方式刷新时 此模式占用CPU较大
"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式
"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种采用这种方式要保证窗口有一部分在屏幕外win7或者vista不需要移动也可后台此模式占用CPU较大
"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多 此模式占用CPU较大
"dx" : dx模式,等同于BindWindowEx中,display设置的"dxgraphic2d|dxgraphic3d",具体参考BindWindowEx
注意此模式需要管理员权限
mouse: 鼠标仿真模式 取值有以下几种
"normal" : 正常模式,平常我们用的前台鼠标模式
"windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件
"windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
"dxmousepositionlockapi|dxmousepositionlockmessage|dxmousestatemessage"
注意此模式需要管理员权限
"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台
"dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况此模式等同于BindWindowEx中的mouse为以下组合
"dxpublicactiveapi|dxpublicactivemessage|dxmousepositionlockapi|dxmousepositionlockmessage|dxmousestateapi|dxmousestatemessage|dxmouseapi|dxmousefocusinputapi|dxmousefocusinputmessage|dxmousecliplockapi|dxmouseinputlockapi|dxmousecursor"
注意此模式需要管理员权限
"dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入
有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况 此模式等同于BindWindowEx中的mouse为以下组合
"dxpublicactiveapi|dxpublicactivemessage|dxmousepositionlockapi|dxmousestateapi|dxmouseapi|dxmousefocusinputapi|dxmousefocusinputmessage|dxmousecliplockapi|dxmouseinputlockapi| dxmousecursor"
注意此模式需要管理员权限
keypad: 键盘仿真模式 取值有以下几种
"normal" : 正常模式,平常我们用的前台键盘模式
"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件
"dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况 此模式等同于BindWindowEx中的keypad为以下组合
"dxpublicactiveapi|dxpublicactivemessage| dxkeypadstateapi|dxkeypadapi|dxkeypadinputlockapi"
注意此模式需要管理员权限
mode : 模式。 取值有以下两种
0 : 推荐模式,此模式比较通用,而且后台效果是最好的
1 : 和模式0效果一样,如果模式0会失败时,可以尝试此模式,此模式仅支持按键和简单游平台,小精灵等一律不支持
2 : 同模式0,此模式为老的模式0,尽量不要用此模式,除非有兼容性问题
3 : 同模式1,此模式为老的模式1,尽量不要用此模式,除非有兼容性问题
4 : 同模式0,如果模式0有崩溃问题,可以尝试此模式
5 : 同模式1, 如果模式0有崩溃问题,可以尝试此模式
返回值:
0: 失败
1: 成功
示例:
// display: 前台 鼠标:前台键盘:前台 模式0
dm_ret = dmBindWindow(hwnd,"normal","normal","normal",0)
// display: gdi 鼠标:前台 键盘:前台模式1
dm_ret = dmBindWindow(hwnd,"gdi","normal","normal",1)
// display: dx 鼠标:前台 键盘:前台模式0
dm_ret = dmBindWindow(hwnd,"dx","normal","normal",0)
// display: dx 鼠标:windows后台 键盘:windows后台 模式1
dm_ret = dmBindWindow(hwnd,"dx","windows","windows",1)
// display: dx 鼠标:dx 后台 键盘: dx后台 模式1
dm_ret = dmBindWindow(hwnd,"dx","dx","dx",1)
// display: dx 鼠标:windows3后台 键盘:windows后台 模式1
dm_ret = dmBindWindow(hwnd,"dx","windows3","windows",1)
注意:
绑定之后,所有的坐标都相对于窗口的客户区坐标(不包含窗口边框)
另外,绑定窗口后,必须加以下代码,以保证所有资源正常释放
这个函数的意思是在脚本结束时,会调用这个函数。需要注意的是,目前的按键版本对于这个函数的执行不是线程级别的,也就是说,这个函数只会在主线程执行,子线程绑定的大漠对象,不保证完全释放。
Sub OnScriptExit()
dm_ret = dmUnBindWindow()
End Sub
另外 绑定dx会比较耗时间,请不要频繁调用此函数
另外如果绑定的是dx,要注意不可连续 *** 作dx,中间至少加个10MS的延时,否则可能会导致 *** 作失败比如绑定图色DX,那么不要连续取色等,键鼠也是一样
注意,图色dx,鼠标windows2 dx dx2以及键盘dx都需要管理员权限才能运行,所以对于WIN7和VISTA用户,在启动目标窗口时,必须用管理员方式启动,否则无法绑定成功!
还有一点特别要注意的是,有些窗口绑定之后必须加一定的延时,否则后台也无效一般1秒到2秒的延时就足够
发现绑定失败的几种可能(一般是需要管理员权限的模式才有可能会失败)
1 系统登录的帐号必须有Administrators权限
2 如果是vista和win7系统,启动窗口进程必须用管理员模式启动,脚本也必须用管理员模式启动
3 一些防火墙会防止插件注入窗口所在进程,比如360防火墙等,必须把dmdll设置为信任
4 还有一个比较弱智的可能性,那就是插件没有注册到系统中,这时CreateObject压根就是失败的 检测对象是否创建成功很简单,如下代码
set dm = createobject("dmdmsoft")
ver = dmVer()
If len(ver) = 0 Then
MessageBox "创建对象失败,检查系统是否禁用了vbs脚本权限"
EndScript
End If
就是帮助文档,里面有这插件里的所有命令的使用方法和说明,用时必看。下面给你一个我自己编的把窗口移动到指定位置的小东东,里面用到了绑定。
PutAttachment "c:\test",""
set ws=createobject("WscriptShell")
wsrun "regsvr32 c:\test\dmdll /s"
set ws=nothing
Delay 50
Set dm = CreateObject("dmdmsoft")
ver = dmVer()
If len(ver) = 0 Then
MessageBox "´´½¨¶ÔÏóʧ°Ü,¼ì²éϵͳÊÇ·ñ½ûÓÃÁËvbs½Å±¾È¨ÏÞ"
EndScript
End If
dnf = dmGetMousePointWindow()
dm_ret = dmBindWindow(dnf,"gdi","windows","windows",0)
dmMoveWindow dnf,1350,707
dm_ret = dmUnBindWindow()
其中
dnf = dmGetMousePointWindow() 是获得当前鼠标指向的窗口的句柄告诉电脑要对那个窗口 *** 作
下面这句是绑定的命令。函数的参数具体用法请看说明书。大概就是windows绑定后你的鼠标会对窗口的造成影响,而dx的方式不会影响。
dm_ret = dmBindWindow(dnf,"gdi","windows","windows",0)
下面这句是把名字为dnf的窗口移动到指定屏幕坐标。
dmMoveWindow dnf,1350,707
最开始一坨是说明书里用来开起大漠插件环境的。
乱码部分不用管它,不影响的。
对了,我是用的按键精灵的环境,不知道有没有影响,估计没啥问题。
必须使用多线程,楼上说的不正确,如果在绑定后再次进行绑定,之前的窗口就会失效
下面是我的代码:
Dim hwnd(5) '数组,这里假设存放着6个窗口的句柄DimEnv nowhwnd '多线程传递变量
For i = 0 To 5
nowhwnd = hwnd(i)
BeginThread main
Delay 3000
Next
Sub main
thehwnd = nowhwnd
dm_ret = dmBindWindow(thehwnd, "normal", "dx", "normal", 0)
'这里写你的点击代码
End Sub
希望我的回答对你有帮助
^o^
找到窗口句柄后,获取窗口大小,然后进行判断大小,区别大号窗口和小号窗口。
比较大小:
获取窗口客户区大小sRect = PluginWindowGetClientRect(Hwnd)
然后分割,Aim = split(sRect,"|")
取x,y长度,进行判断大小。
200多个窗口。大漠本身就可以绑定多个窗口的,绑定多窗口,脚本属性里面-----禁止脚本重复运行--选择否,这样一个脚本就可以控制多个窗口了,也可以将脚本源码复制出来,多做几个脚本,就是多个脚本控制多个窗口。
大漠插件根据窗口位置过去坐标方法如下:
1、下载大漠插件、解压,运行注册大漠插件到系统bat,把全部东东都复制到按键精灵的plugin目录下。
2、创建一个文件夹,以d:\test为例。把你要找的图(60bmp)、大漠插件里的dmdll和RegDlldll复制到这个文件夹。
3、打开按键精灵,创建一个新脚本。往附件(在软件左边框选项)里面添加dmdll、Regdll和图60bmp。
以上就是关于按键精灵 大漠插件怎么样绑定游戏窗口代码基本格式全部的内容,包括:按键精灵 大漠插件怎么样绑定游戏窗口代码基本格式、大漠插件能查询出当前已绑定的句柄吗、按键精灵如何使用大漠插件绑定数个窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)