马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这里以控制记事本为例,搜索所有记事本窗口,对每个窗口创建一个线程序,修改其窗口标题为窗口句柄和当前时间。当一个记事本为当前窗口时,可以通过“Ctrl+1”组合键暂停,可以通过“Ctrl+2”组合键恢复,实现窗口的单独控制。
[按键精灵] 纯文本查看 复制代码 //根据记事本类名“Notepad”查找第一个窗口句柄
hwnd = Plugin.WndEx7_20.FindWindow("Notepad", 0)
n = 0
max = 64
//创建保存窗口句柄和脚本工作线程ID的二维数组
ReDim HwndArray(1, max)
Do While hwnd <> 0
//创建脚本的工作线程
tid = BeginThread(MyThread)
//将窗口句柄发送给指定线程
Call Plugin.WndEx7_20.PostThreadData(tid, hwnd, 0)
//将窗口句柄和脚本工作线程ID保存到数组中
HwndArray(0, n) = hwnd
HwndArray(1, n) = tid
n = n + 1
If n > max Then
max = max + 64
//数组大小不够用时扩大数组
ReDim Preserve HwndArray(1, max)
End If
//根据记事本类名“Notepad”查找下一个窗口句柄
hwnd = Plugin.WndEx7_20.FindWindowEx(0,hwnd,"Notepad",0)
Loop
//没找到符合条件的窗口时停止脚本
If n = 0 Then
EndScript
End If
//创建对指定窗口的按键的检测,用于当前窗口对应脚本的暂停、恢复、和停止
//“Ctrl+1”用于暂停,“Ctrl+2”用于继续
KeyWndData = Plugin.WndEx7_20.CreateKeyWindowTrack("Ctrl+1|Ctrl+2", 1 Or 32)
Do
//获得按键检测的数据,根据CreateKeyWindowTrack参数,这里返回的是按键序号
//0对应的是“Ctrl+1”,1对应的是“Ctrl+2”
If Plugin.WndEx7_20.GetKeyWindow(KeyWndData, KeyNum, hwnd) > 0 Then
tid = 0
For i = 0 To n-1
If HwndArray(0, i) = hwnd Then
tid = HwndArray(1, i)
Exit For
End If
Next
If tid<>0 Then
//“Ctrl+1”被按下时,GetKeyWindow获得的按键序号是0
//“Ctrl+2”被按下时,GetKeyWindow获得的按键序号是1
Select Case KeyNum
Case 0
Call PauseThread(tid)
Case 1
Call ContinueThread(tid)
End Select
End If
End If
Delay 100
Loop
Sub MyThread()
Do
//接收PostThreadData发送的窗口句柄
If Plugin.WndEx7_20.RecvThreadData(hwnd)=0 Then
Exit Do
End If
Loop
Do
//执行对目标窗口的操作
//MsgBox Hex(hwnd),4096,"子线程"
Call Plugin.WndEx7_20.SetWindowText(hwnd,"窗口句柄:" & Hex(hwnd) & ", 时间:" & CStr(Now()))
Delay 100
Loop
End Sub
Sub OnScriptExit()
//删除对按键的监测,释放资源
Call Plugin.WndEx7_20.DeleteKeyWindowTrack(KeyWndData)
End Sub
脚本中使用的361度窗口插件下载:
http://pan.baidu.com/s/1ntQswaP
本文转载于361度插件作者博客
http://bg361.blog.163.com/ |