求按键精灵固定句柄和移动句柄的激活设置~~~
2个问题!1.请问有没有什么办法可以固定窗口句柄?下次在开的时候还是这个句柄!还有怎么激活这个句柄,如果这个句柄不存在,脚本就暂停重新查找这个句柄!2.如果不行,我把脚本...
2个问题!1.请问有没有什么办法可以固定窗口句柄?下次在开的时候还是这个句柄!还有怎么激活这个句柄,如果这个句柄不存在,脚本就暂停重新查找这个句柄! 2.如果不行,我把脚本用按键精灵里面的小精灵制作成软件包以后,需要制作7个窗口的句柄4个主程序,2个文本文档,1个网页如何在小精灵中设置这几个移动句柄,在下次启动时候可以修改? 这个是我设置的其中部分,希望高手帮忙~~~UserVar a=1180460{程序1句柄号}
UserVar b=1180461{程序2句柄号}
UserVar c=1180462{程序3句柄号}
UserVar d=1180463{程序4句柄号}
UserVar e=1180464{文本1句柄号}
UserVar f=1180465{文本2句柄号}
UserVar g=1180466{网页1句柄号}如果有a=1180460则激活aPlugin Window.Active(a)在按键精灵里面要一个一个的修改,非常麻烦,所以用小精灵设置UserVar 来修改,但是问题来了,在小精灵里面修改好的句柄不自动找到句柄窗口激活就继续执行下一步的程序,麻烦高手指点 展开
UserVar b=1180461{程序2句柄号}
UserVar c=1180462{程序3句柄号}
UserVar d=1180463{程序4句柄号}
UserVar e=1180464{文本1句柄号}
UserVar f=1180465{文本2句柄号}
UserVar g=1180466{网页1句柄号}如果有a=1180460则激活aPlugin Window.Active(a)在按键精灵里面要一个一个的修改,非常麻烦,所以用小精灵设置UserVar 来修改,但是问题来了,在小精灵里面修改好的句柄不自动找到句柄窗口激活就继续执行下一步的程序,麻烦高手指点 展开
2个回答
2013-08-27
展开全部
如果你使用固定的文件或者一个程序只开一个,那就可以使用标题来执行打开,而不用到处找句柄!下面这些东西我直接改了下给你,变量就懒得改了,执行以后所有的窗口标题和句柄都出现在里面,按你的程序查找名字,然后在添加到Plugin hwnd =Window.Find(0,"文本A.txt - 记事本")Plugin Window.Active(hwnd) 激活当前窗口~~~如果你有多个记事本之类的,最好先设好名字,比如我的文本A。默认名字为“无标题 - 记事本” //先定义变量是一个好习惯
dim handle,handle1, s,s1,s2,s3, MyArray,parentH, fileHandle
set TiShiObj = createobject("WScript.Shell")
//=================== 主程序 ======================
//创建一个文件名为
fileHandle ="D:\刷号程序\记录句柄.txt"
//调用子程序
Gosub 查找窗体
//用笔记本软件打开刚才保存的文件
VBSCall RunApp(fileHandle)
Rem 结束
//=================================================================================
//================== 子程序 ========================
Sub 查找窗体
//变量初始化
handle=1
handle1=0
//一直循环查找到子窗口,直到找不到为止
While handle<>0
//查找当前窗口的子窗口
Plugin handle = Window.FindEx(parentH, handle1,0,0)
//如果找到子窗口
If handle <> 0
//获取子窗口的信息, GetClientRect 返回的信息是一个字符串, 格式如:123|356|200|400
Plugin s = Window.GetClientRect(handle)
//按|对上面的字符串进行分割, 并保存到数组里面
//Split进行分割后, MyArray数组中的数组如下:
// MyArray(0) = 123 <---窗口的左边坐标
// MyArray(1) = 356 <---窗口的上边坐标
// MyArray(2) = 200 <---窗口的宽度
// MyArray(3) = 400 <---窗口的高度
//注意: 数组的第一个元素, 读取的时候是 MyArray(0), 而不是 MyArray(1)
//即数组元素的下标是从 0 开始, 而不是从 1 开始的
//获取窗口的标题
Plugin s2 = Window.GetText(handle)
s2 = ",标题:" & s2
s3 = " 句柄: " & CStr(handle)
//保存上面的各种信息写到文件中,即c:\log.txt
If fileHandle <> -1
Plugin File.WriteFileEx(fileHandle, s2 & s3)
EndIf
EndIf
//更新handle1的值,以保证循环继续
handle1 = handle
EndWhile
Return 查找窗体
dim handle,handle1, s,s1,s2,s3, MyArray,parentH, fileHandle
set TiShiObj = createobject("WScript.Shell")
//=================== 主程序 ======================
//创建一个文件名为
fileHandle ="D:\刷号程序\记录句柄.txt"
//调用子程序
Gosub 查找窗体
//用笔记本软件打开刚才保存的文件
VBSCall RunApp(fileHandle)
Rem 结束
//=================================================================================
//================== 子程序 ========================
Sub 查找窗体
//变量初始化
handle=1
handle1=0
//一直循环查找到子窗口,直到找不到为止
While handle<>0
//查找当前窗口的子窗口
Plugin handle = Window.FindEx(parentH, handle1,0,0)
//如果找到子窗口
If handle <> 0
//获取子窗口的信息, GetClientRect 返回的信息是一个字符串, 格式如:123|356|200|400
Plugin s = Window.GetClientRect(handle)
//按|对上面的字符串进行分割, 并保存到数组里面
//Split进行分割后, MyArray数组中的数组如下:
// MyArray(0) = 123 <---窗口的左边坐标
// MyArray(1) = 356 <---窗口的上边坐标
// MyArray(2) = 200 <---窗口的宽度
// MyArray(3) = 400 <---窗口的高度
//注意: 数组的第一个元素, 读取的时候是 MyArray(0), 而不是 MyArray(1)
//即数组元素的下标是从 0 开始, 而不是从 1 开始的
//获取窗口的标题
Plugin s2 = Window.GetText(handle)
s2 = ",标题:" & s2
s3 = " 句柄: " & CStr(handle)
//保存上面的各种信息写到文件中,即c:\log.txt
If fileHandle <> -1
Plugin File.WriteFileEx(fileHandle, s2 & s3)
EndIf
EndIf
//更新handle1的值,以保证循环继续
handle1 = handle
EndWhile
Return 查找窗体
2013-08-27
展开全部
一个一个回答你。1)窗口的句柄不是固定的,也无法通过脚本或者其他程序进行固定,这是由于windows系统来决定的窗口的句柄的唯一性。2)你的7个窗口句柄需要轮换激活的话,其实不需要通过uservar来设置窗口句柄,而是做出提示,每打开一个窗口,就获取一次句柄记录下来。如下脚本:VBSCall MessageBox("请运行第一个程序,然后点击确定。")Plugin win1=Window.Foreground()VBSCall MessageBox("请运行第二个程序,然后点击确定。")Plugin win2=Window.Foreground().....如此类推 这样获取到的7个窗口句柄后再做你后面的脚本操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |