这个文件可以随时产生一个剪贴板文字的文本文件,以供其他程序读取。
这个程序修改了许多次了,主要是针对网络延迟的问题。
最终找到了解决方案:探测输入的界面的反馈信息,也就是反馈的颜色。当输入完成以后界面恢复到正常,再开始输入另外一个号码。
Global $Paused HotKeySet("{PAUSE}", "TogglePause") HotKeySet("{ESC}", "Terminate") AutoItSetOption("WinTitleMatchMode", 2) ;是为了调用ie状态栏判断 #include<File.au3> $var=ClipGet() ;~ 下面是针对回收塑料箱里面的中文,进行回车处理 ;~ $var_cn=StringRegExp($var, ‘\D‘, 1) ;选出中文 ;$var1=StringReplace($var,$var_cn,@CR ) ;~ MsgBox(16,12121,$var_cn) $text = StringReplace($var,"",@CR ) ;如果有逗号换成换行 $text = StringReplace($text,",",@CR ) ;如果有逗号换成换行 $txt="D:\剪贴板.txt" _FileCreate($txt) FileWrite($txt,$text) ;以下是逐行输入文本的代码,与read一样 $cele=MsgBox(262145,"注意","请将光标放在需要输入号码的地方,按确定后3秒钟开始自动输入!") if 2=$cele Then Exit EndIf ToolTip("如果错误出现的太多,请重新登陆系统。中断输入请按 pause", 0, 0,"小提示",1,4) Sleep(3000) ;这里得到当前鼠标的正常状态的颜色,以便不正常的时候停止等待~ ToolTip("请将鼠标移动到检测部位,就是繁忙时候会变颜色的地方", 0, 0,"小提示",1,4) $pos = MouseGetPos() $var0= PixelGetColor($pos[0],$pos[1]) sleep(1500) #include <IE.au3> $oIE = WinGetTitle ("") $file = FileOpen($txt,0) ; Read in 1 character at a time until the EOF is reached While 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop ;MsgBox(0, "Line read:", $line) send($line,1) send("{ENTER}") Sleep(100) ;121212-50 ; _IELoadWait ($oIE,50,10000) ;试图用ie的地址栏文本判断是否繁忙,平时的时候是“完毕” ;还需要判断是不是有新的信息跳出来,(通过判断原来的窗口死活)300 ;通过检查原来的ie界面时候变灰,来判断新是否有新窗口跳出 DO Sleep(200) ;等待窗口出现 $var = PixelGetColor($pos[0],$pos[1]);获取当前颜色 if $var0<>$var then ;Sleep(150) EndIf ;~下面即使出现错误也发送回车 ;~ #cs If 0=WinActive($oIE) then ;差错2016 Sleep(150) send("{ENTER}") EndIf ;~ #ce until 1=WinActive($oIE) and $var0=$var Send("{BS 14}") ;在输入以前清空内容,向文本框发出12次回格命令 Wend FileClose($file) Func TogglePause() $Paused = NOT $Paused ClipPut($line) ;输出当前错误的号码 key While $Paused sleep(100) ToolTip(‘脚本已被“暂停”‘,0,0) WEnd ToolTip("") EndFunc Func Terminate() Exit 0 EndFunc MsgBox(48,"通知","你的输入已经完成!")
这个程序如何使用呢?
看看程序里面的说明,就应该知道大概了。
首先,我们复制需要输入的号码,可以几个或者是表格的一列号码。
然后启动这个程序,把鼠标放在需要输入的文本框里。
程序跳入号码,然后等待反馈。
继续第二个号码。直到输入全部完成。
希望上面的代码能够让同好们借鉴到,用于自己的编程中。