求按键精灵固定句柄和移动句柄的激活设置~~~

2024年11月01日 17:51
有2个网友回答
网友(1):

如果你使用固定的文件或者一个程序只开一个,那就可以使用标题来执行打开,而不用到处找句柄!下面这些东西我直接改了下给你,变量就懒得改了,执行以后所有的窗口标题和句柄都出现在里面,按你的程序查找名字,然后在添加到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 查找窗体

网友(2):

一个一个回答你。1)窗口的句柄不是固定的,也无法通过脚本或者其他程序进行固定,这是由于windows系统来决定的窗口的句柄的唯一性。2)你的7个窗口句柄需要轮换激活的话,其实不需要通过uservar来设置窗口句柄,而是做出提示,每打开一个窗口,就获取一次句柄记录下来。如下脚本:VBSCall MessageBox("请运行第一个程序,然后点击确定。")Plugin win1=Window.Foreground()VBSCall MessageBox("请运行第二个程序,然后点击确定。")Plugin win2=Window.Foreground().....如此类推 这样获取到的7个窗口句柄后再做你后面的脚本操作。