按键精灵脚本教程:单线程操作多窗口_第1页
按键精灵脚本教程:单线程操作多窗口_第2页
按键精灵脚本教程:单线程操作多窗口_第3页
按键精灵脚本教程:单线程操作多窗口_第4页
按键精灵脚本教程:单线程操作多窗口_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、按键精灵脚本教程:单线程操作多窗口来源:按键学院 【按键精灵】不开多线程,在单线程内如何对多个窗口分别进行操作,以实现多开目的?让我们一起来了解了解内容提要本例中,讲解的是使用大漠插件,通过创建多个大漠对象,切换大漠对象对多窗口分别进行操作。1    获取要绑定的窗口句柄,存放在窗口句柄数组中。2    有几个窗口就创建几个大漠对象。3    创建一个公用对象,用于切换。4    循环切换大漠对象,分别绑定对应的窗口。5    循环切换大漠对象,

2、分别操作对应的窗口。获取窗口句柄1、循环等待按键,如果按下的是F7键,则获取当前鼠标指向的窗口句柄。2、获取窗口句柄存放到窗口句柄数组中。3、如果按下的是F8键,则退出do循环,继续后续的操作。代码Dim hwnd_all(100)/当我们不知道用户会启动多少个窗口的时候,可以把数组定义大一点。Do While key <> 119 /没有按下F8则进入循环 Key = WaitKey() /等待按键并且获取按键码 If key = 118 Then /如果按下F7则 将变量js加1 js=js+1 hwnd_all(js) = Plugin.Window.MousePoint()

3、 /获取当前鼠标指向的窗口的窗口句柄存放到数组hwnd_all中 End IfLoop分析     Do While key <> 119    Do循环分为前判断和后判断,          它们的区别在于,前判断是先判断条件符不符合然后进入循环体,           而后判断是先进入循环体执行一次之后再进行判断:      

4、60;    前判断:                    Do  while 条件                         Loop             后判断:&

5、#160;                  Do                           Loop while 条件创建大漠对象“刚接触大漠的童鞋可能对于对象的概念比较模糊。其实作为一个单纯的使用者,暂时不需要去了解更深的原理。咱们只需知道想要用大漠的命令,就要拿到它的使用权。而建立大漠对象就是

6、获取使用权的步骤。 有没有童鞋是这样认为的:觉得大漠的命令一定是  dm.moveto x,y 或者 dm.ver   认为一定要以dm.什么的形式来使用命令    其实不是这样的,你可以这样使用大漠命令,xx.moveto x,y  或者 oo.moveto x,y   咱高兴用什么就用什么。这个取决于我们创建大漠对象时所命名的对象名。例如          我们创建一个大漠对象,命名

7、为ha :          Set ha = createobject("dm.dmsoft")          那么,咱们在使用大漠命令的时候,就应该这样使用:          ha.moveto x,y语法      Set 对象 = createobject("dm.dmsoft") /创建大漠对象

8、0;        对象.moveto x,y   /使用命令我们现在回到例子中,一个窗口对应创建一个大漠对象。窗口和对象之间的关系要怎么理解呢?为什么不多个窗口共用一个对象呢?例如          咱们是一家拥有上千保姆的家政公司。一个家庭比作一个窗口,一个保姆比作一个对象。咱们把保姆派到一个家庭之后,保姆才能接收并且执行咱们下达的命令。一个保姆对应一个家庭,轻轻松松。但是当一个保姆要对应10个家庭,她要怎么办呢?这家擦了个地板又跑到那家擦个

9、玻璃。一个对象在第一个窗口执行了一个动作解绑之后绑定第二个窗口,第二个窗口执行一个动作解绑,然后再去绑定第三个窗口绑定和解绑是非常耗费系统资源的,所以这里不提倡这种做法。代码/ 声明对象(有几个窗口声明几个)ReDim dm_all(js) For i= 1 to js / 分别创建对象,对象存放在数组中 Set dm_all(i) = createobject("dm.dmsoft")Next注意  按键中不支持数组形式对象直接使用命令,例如:  dm_all(0).moveto x,y  不支持这样使用。所以我们需要创建一个公用的对象,用于

10、将数组形式的对象转为变量名形式的对象,作为对象切换的一个容器。/声明公共对象,用于切换/Set dm = nothing /创建空的对象 切换对象绑定窗口有多少个窗口就循环几次绑定窗口,咱们的窗口数量是js, 循环js次,代码如下:代码For i = 1 To js Call 切换对象(i) dm_ret = dm.BindWindow(hwnd_all(i), "dx", "windows", "windows", 0) / 检测返回值 If dm_ret = 0 Then MessageBox "绑定失败" E

11、ndScript End If / 分别设置路径字库等 / Call 切换对象(i) / dm.SetPath "c:test" / dm.SetDict 0,"test.txt"NextSub 切换对象(index) Set dm = dm_all(index)End Sub分析               进入for循环调用子程序 “切换对象”,把i的值传递给子程序。         

12、0;    “切换对象”子程序中将当前的大漠对象 ,dm_all(index) 赋值给 dm               返回到for循环中,绑定对应的窗口。操作脚本的主循环,通过不断的切换对象,向对应的对象下达操作,从而实现脚本多开的目的。但是需要注意一点,由于是切换对象进行操作的,所以对这些窗口的操作并不是同时进行的。第一个窗口执行完之后才会第二个窗口,顺延下去。代码/ 脚本主循环Do For i = 1 To js Call 切换对象(i) Call

13、 操作(i) Delay 1000 NextLoopSub 操作(index) dm.SendString hwnd_all(index),index dm.keypress 13End Sub整体代码Call 大漠注册()/获取要绑定的窗口句柄/Dim hwnd_all(1000 )Do While key <> 119 Key = WaitKey() If key = 118 Then js=js+1 hwnd_all(js) = Plugin.Window.MousePoint() TracePrint hwnd_all(js) End IfLoop/ 声明对象(有几个窗口声

14、明几个)ReDim dm_all(js)For i= 1 to js / 分别创建对象 Set dm_all(i) = createobject("dm.dmsoft")Next/声明公共对象/Set dm = nothing / 分别绑定窗口/For i = 1 To js Call 切换对象(i) dm_ret = dm.BindWindow(hwnd_all(i), "dx", "windows", "windows", 0) / 检测返回值 If dm_ret = 0 Then MessageBox &qu

15、ot;绑定失败" EndScript End If / 分别设置路径字库等 / Call 切换对象(i) / dm.SetPath "c:test" / dm.SetDict 0,"test.txt" Next / 脚本主循环/Do For i = 1 To js Call 切换对象(i) Call 操作(i) Delay 200 NextLoopSub 切换对象(index) Set dm = dm_all(index)End SubSub 操作(index) dm.SendString hwnd_all(index),index dm.keypress 13End Sub / 分别解绑窗口/Sub OnScriptExit() For i = 1 To js Call 切换对象(i) dm_ret = dm.UnBindWindow() NextEnd Sub/注册大漠插件/Sub 大漠注册() Set ws = createobject("Wscript.Shell") ws.run "regsvr32 atl.dll /s" Set ws = nothing PutAttachment "c:guoer", "dm.dll" PutAttach

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论