ControlSend |
首页 后退 前进 |
ControlSend 发送字符串到字符控件.
ControlSend ( "title", "text", controlID, "string" [, flag = 0] ) 参数
返回值
备注 ControlSend() 的工作方式类似 Send() 但它能直接对窗口/控件发送键击命令, 不只限于激活窗口.
ControlSend() 发送命令提示符是不可靠的, 命令提示符对不同工作的正常窗口似乎是检查实际状态, 而不是接受击键消息. 对于常规 windows(操作系统), ControlSend() 的可靠方法应该是使用 Send() 函数 - 发送 shift(换档键), ctrl(控制键), alt(备用键) 等等. 如同 Send() 函数帮助页提到的, 在大写锁定时, 无法模拟使用 Shift 键. 一个例子是使用捷克键盘. 很好的替换方法是使用 ControlSetText() 函数.
控件可能需要用 ControlFocus() 命令获得焦点, 特别是引用由脚本创建的控件 ID 时.
Opt("SendKeyDelay",...) 修改发送按键之间的间歇时间长度. Opt("SendKeyDownDelay",...) 修改按键在释放之前按压的时间长度.
函数示例 Example() ----------------------------------------
该函数可以通过命令 exect 调用 参见: ControlCommand, Send, ControlSetText, ControlFocus, SendKeyDelay (Опция), SendKeyDownDelay (Опция) exect=ControlSend('Безымянный~~—~~Блокнот','''','Edit1','Hello') ;;在窗口"记事本"中插入文本"hello"(应该被启动,可以最小化)
exect=$var_h=WinActivate('Безымянный~~—~~Блокнот')||ControlSend(Eval('var_h'),'''','[CLASS:Edit;INSTANCE:1]','Это~~некоторый~~текст') ;; 激活"记事本"窗口并插入指定的文本(应该启动)
tcimg=$cm498 pause=500 exect=ControlSend('[CLASS:TBUTTONCHANGEDLG]','''','TAltEdit1','+{INSERT}',0) ;;在"提示"字段(TC x32)中调用工具栏并输入文字从剪贴板
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),'''','Edit1','Hello') ;; 运行"记事本",等待激活并输入"hello"
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),'''','Edit1','закройте~~окно')||WinWaitClose(Eval('var_h'))||MsgBox(4096,'''','окно~~закрыто') ;; 运行"记事本",等待用户关闭窗口
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),'''','Edit1','сверните~~окно')||WinWaitNotActive(Eval('var_h'))||MsgBox(4096,'''','окно~~не~~активно') ;; 运行"记事本",等到窗口不活动 © Аверин Андрей для Total Commander Image Averin-And@yandex.ru |