jackly 发表于 2012-5-2 10:11:09

窗口焦点的问题

我是新手,问个小白问题,别笑话我啊

就是我想对一个指定的窗口发送键盘按键

当这个窗口的焦点丢失(比如最小化窗口时),我想让这个脚本暂停。窗口恢复焦点时,脚本又运行!

代码要用到哪些?谢谢指教!

user3000 发表于 2012-5-2 10:53:35

回复 1# jackly
最好自己也查看帮助里的相应函数, 才会有更深的理解和体会!
Run("notepad.exe")       
; 最多等待 10 秒, 记事本窗口一激活则立即继续下面代码
Local $hWnd = WinWait("", "", 10)
Sleep(2000); 延迟2秒钟, 请设置记事本窗口状态, 测试代码运行情况
Example()

Func Example()
While 1
        Sleep(60) ; 适当加点延迟, 以降低CUP占用率
        ; 获取 $hwnd 句柄 指向的窗口的状态
        Local $iState = WinGetState($hWnd)
        ; 检查该窗口是 激活状态 则退出循环
        If BitAND($iState, 8) Then         ExitLoop
WEnd
        Send('记事本是激活状态, 开始发送字!')
        ; 关掉记事本窗口
        WinClose($hWnd)
EndFunc   ;==>Example

jackly 发表于 2012-5-2 11:12:44

回复 2# user3000
十分感谢楼上的大神

user3000 发表于 2012-5-2 11:16:01

回复 3# jackly

    不要这样称呼, 当不起呀!
这也只是基本运用的东西, 你多看帮助文件, 多点练习, 慢慢地就掌握了.
如果问题解决了, 请记得遵守论坛规则, 编辑帖子标题, 加入'已解决'字样!

xms77 发表于 2012-5-2 11:40:00

回复 1# jackly
我想应该不是让脚本暂停,脚本一直执行检测指定窗口是否被激活,如果激活就发送按钮。用WinActive ( "窗口标题" [, "窗口文本"] )函数来检测就行了。

while 1
if WinActive("你指定的窗口标题文本", "窗口内的一些文本") then Send("what")
sleep(100)
Wend

当然上述代码会连续发送按键信息,只要指定窗口被激活,看你要怎么做,再可以加上其他条件。

icejs 发表于 2012-5-3 22:49:26

马上回去试试
页: [1]
查看完整版本: 窗口焦点的问题