网站首页 企业新闻 > 正文
想必现在有很多小伙伴对于按键精灵脚本教程:单线程操作多窗口方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于按键精灵脚本教程:单线程操作多窗口方面的知识分享给大家,希望大家会喜欢哦。
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() //获取当前鼠标指向的窗口的窗口句柄存放到数组hwnd_all中 End IfLoop
3、『分析』◎ Do While key <> 119 Do循环分为前判断和后判断, 它们的区别在于,前判断是先判断条件符不符合然后进入循环体, 而后判断是先进入循环体执行一次之后再进行判断: 前判断: Do while 条件 Loop 后判断: Do Loop while 条件 "{�pg�E02�idow-orphan; text-align:left; " > End IfLoop
4、创建大漠对象“刚接触大漠的童鞋可能对于对象的概念比较模糊。其实作为一个单纯的使用者,暂时不需要去了解更深的原理。咱们只需知道想要用大漠的命令,就要拿到它的使用权。而建立大漠对象就是获取使用权的步骤。 有没有童鞋是这样认为的:觉得大漠的命令一定是 dm.moveto x,y 或者 dm.ver 认为一定要以dm.什么的形式来使用命令 其实不是这样的,你可以这样使用大漠命令,xx.moveto x,y 或者 oo.moveto x,y 咱高兴用什么就用什么。这个取决于我们创建大漠对象时所命名的对象名。『例如』 我们创建一个大漠对象,命名为ha : Set ha = createobject("dm.dmsoft") 那么,咱们在使用大漠命令的时候,就应该这样使用: ha.moveto x,y『语法』 Set 对象 = createobject("dm.dmsoft") //创建大漠对象 对象.moveto x,y //使用命令 我们现在回到例子中,一个窗口对应创建一个大漠对象。窗口和对象之间的关系要怎么理解呢?为什么不多个窗口共用一个对象呢?
5、『例如』 咱们是一家拥有上千保姆的家政公司。一个家庭比作一个窗口,一个保姆比作一个对象。咱们把保姆派到一个家庭之后,保姆才能接收并且执行咱们下达的命令。一个保姆对应一个家庭,轻轻松松。但是当一个保姆要对应10个家庭,她要怎么办呢?这家擦了个地板又跑到那家擦个玻璃。一个对象在第一个窗口执行了一个动作解绑之后绑定第二个窗口,第二个窗口执行一个动作解绑,然后再去绑定第三个窗口……绑定和解绑是非常耗费系统资源的,所以这里不提倡这种做法。
6、『代码』// 声明对象(有几个窗口声明几个)ReDim dm_all(js) For i= 1 to js // 分别创建对象,对象存放在数组中 Set dm_all(i) = createobject("dm.dmsoft")Next 『注意』 按键中不支持数组形式对象直接使用命令,例如: dm_all(0).moveto x,y 不支持这样使用。『所以』我们需要创建一个公用的对象,用于将数组形式的对象转为变量名形式的对象,作为对象切换的一个容器。//////声明公共对象,用于切换//////Set dm = nothing //创建空的对象
7、切换对象绑定窗口有多少个窗口就循环几次绑定窗口,咱们的窗口数量是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 "绑定失败" EndScript End If // 分别设置路径字库等 // Call 切换对象(i) // dm.SetPath "c:test" // dm.SetDict 0,"test.txt"NextSub 切换对象(index) Set dm = dm_all(index)End Sub 『分析』 ◎ 进入for循环调用子程序 “切换对象”,把i的值传递给子程序。 ◎ “切换对象”子程序中将当前的大漠对象 ,dm_all(index) 赋值给 dm ◎ 返回到for循环中,绑定对应的窗口。
8、操作脚本的主循环,通过不断的切换对象,向对应的对象下达操作,从而实现脚本多开的目的。但是需要注意一点,由于是切换对象进行操作的,所以对这些窗口的操作并不是同时进行的。第一个窗口执行完之后才会第二个窗口,顺延下去。『代码』// 脚本主循环Do For i = 1 To js Call 切换对象(i) Call 操作(i) Delay 1000 NextLoopSub 操作(index) dm.SendString hwnd_all(index),index dm.keypress 13End Sub
9、整体代码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 ///// 声明对象(有几个窗口声明几个)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 "绑定失败" 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" PutAttachment ".Plugin" ,"RegDll.dll" call Plugin.RegDll.Reg ( "c:guoerdm.dll") Set dm = createobject("dm.dmsoft") ver = dm.ver() If len(ver) = 0 Then MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限" EndScript End IfEnd Sub
本文到此结束,希望对大家有所帮助。
版权说明: 本文由用户上传,如有侵权请联系删除!
猜你喜欢:
- 2022-09-20 大米南瓜粥的禁忌有什么好处(大米南瓜粥的禁忌有什么)
- 2022-09-20 直招士官有哪些专业要求男生(直招士官有哪些专业要求)
- 2022-09-20 狗最怕什么东西吃(狗最怕什么东西)
- 2022-09-20 草海在哪里(草海在哪)
- 2022-09-20 照片复数英语怎么写(照片的英文复数怎么写)
- 2022-09-20 矿盐为什么不能吃(矿盐能不能食用)
- 2022-09-20 拼音f的四线三格写法(汉语拼音f在四线三格书写占几格?)
- 2022-09-20 怀孕四个月应该吃什么(怀孕4个月吃什么 4个月孕妇食谱大全)
最新文章:
- 2023-07-03 适合阳台种植的盆景(盆栽有哪些适合阳台种植 适合阳台种植的盆栽)
- 2023-07-03 文件盖章处要写单位名称吗(盖章的位置有什么讲究 对文件加盖公章有什么讲究)
- 2023-07-03 香港黄道益活络油真假怎么分(如何鉴别香港白花油的真假)
- 2023-07-03 如何挑选一双好的运动鞋(如何挑选高档运动鞋)
- 2023-07-03 如何挑选电动车头盔(如何挑选电熨斗)
- 2023-07-03 70年代真丝绸老布料(怎么样鉴别真丝绸的真假)
- 2023-07-03 电推剪推荐(如何挑选好的电推剪)
- 2023-07-03 如何挑选电热鞋的好坏(如何挑选电热鞋)
- 2023-07-03 白炽灯怎么看好坏(如何鉴别白炽灯泡的质量好坏)
- 2023-07-03 如何挑选电蚊香液(如何挑选电蚊香)
- 2023-07-03 让倔强小猫心烦意乱的方法 漫画(正确饲养小猫的方法)
- 2023-07-03 给泰迪洗澡要注意什么(泰迪洗澡全攻略)
- 2023-07-03 虱子和跳蚤(虱子和跳蚤一样吗)
- 2023-07-03 concentration可数(stationery可数吗)
- 2023-07-03 秋裤是什么时候传到中国的(秋裤是什么)
- 2023-07-03 怎样清除智能马桶盖水箱内的水?(如何清洗智能马桶的水箱)