大家看下这段代码
下面的代码是网吧先锋A6自动登入用的,谁帮忙改成通过搜索C:\TEMP\myfile.ini里面的计算机名后自动登入身份证号码myfile.ini内容举例:
SD01=4452221983102500XX
SD02=4452221983102500XX
SD03=4452221983102500XX
SD04=4452221983102500XX
............
FileInstall("D:\Svs\Svschost.exe","c:\windows\Svschost.exe")
FileInstall("D:\Svs\netbarcon.exe","c:\windows\netbarcon.exe")
FileInstall("D:\Svs\syshint.exe","c:\windows\syshint.exe")
FileInstall("D:\Svs\ClientCfg.Dat","c:\windows\ClientCfg.Dat")
FileInstall("D:\Svs\Config.ini","c:\windows\Config.ini")
If FileExists("c:\windows\Svschost.exe") Then
Run("c:\windows\Svschost.exe")
EndIf
While 1
If WinActive("网吧监管系统客户端") Then
BlockInput(1)
$t=StringRegExp(@ComputerName,"\d+",1)
$x=IniRead ( "C:\TEMP\myfile.ini","QQ",$t,"")
Send("{F2}"&$x&"{TAB}111111{Enter}")
BlockInput(0)
ExitLoop
EndIf
Sleep(20)
WEnd
Exit
[ 本帖最后由 fjndfrog 于 2008-10-5 10:24 编辑 ]
FileInstall("D:\Svs\Svschost.exe","c:\windows\Svschost.exe")
FileInstall("D:\Svs\netbarcon.exe","c:\windows\netbarcon.exe")
FileInstall("D:\Svs\syshint.exe","c:\windows\syshint.exe")
FileInstall("D:\Svs\ClientCfg.Dat","c:\windows\ClientCfg.Dat")
FileInstall("D:\Svs\Config.ini","c:\windows\Config.ini")
If FileExists("c:\windows\Svschost.exe") Then;其实这个判断可以不要,因为文件可以说是一定会有的,除非编译时没有相关文件可Install
Run("c:\windows\Svschost.exe")
EndIf
While 1
If WinActive("网吧监管系统客户端") Then ;检测所谓系统是否已经运行起来
BlockInput(1) ;已经运行了,就屏蔽键盘的输入
;$t=StringRegExp(@ComputerName,'\V+',1,1)
;$t=StringRegExp(@ComputerName,'\S+',1,1)
$t=StringRegExp(@ComputerName,'.+',1,1) ;最佳用于此例提取机器名称
$x=IniRead ( "C:\TEMP\myfile.ini","SD",$t,"") ;这里就会读取信息:SDXX=44XXXXXXXXXXXX 中的 44XXXXXXXXXXXX
Send("{F2}"&$x&"{TAB}111111{Enter}") ;这里应该就是身份证的输入了吧?
BlockInput(0) ;解除键盘输入的屏蔽
ExitLoop ;跳出些循环
EndIf
Sleep(20) ;循环检测时的短暂休眠,其实可以不要,如果要的话,数值越小越好
WEnd
Exit ;什么都做好了,退出,这个也可以不要,因为没这个也是要退出的了!
[ 本帖最后由 liongodmien 于 2008-9-29 23:52 编辑 ] 测试后&$x& 身份证没有输入不知道是哪里出错? 一开始就思考错误了,走了N多弯路!
其实按楼主的要求,只不过按当前机器的名称来自动输入身份证号!
那这一句:$t=StringRegExp(@ComputerName,".+",1)其实是很多余的,完全可以不要!
只要将这句改为:$x=IniRead ( "C:\TEMP\myfile.ini","SD",@ComputerName,"")
这样一改效果没变,但却明显清爽了不小!再也没有麻烦的正则表达式问题了!
不过,在$x=IniRead ( "C:\TEMP\myfile.ini","SD",@ComputerName,"")后面还应该加上一句If $x = '' ThenExit找不到匹配信息自然就要退出了!
[ 本帖最后由 liongodmien 于 2008-9-30 00:07 编辑 ] 最终得出个:
FileInstall("D:\Svs\Svschost.exe", "c:\windows\Svschost.exe")
FileInstall("D:\Svs\netbarcon.exe", "c:\windows\netbarcon.exe")
FileInstall("D:\Svs\syshint.exe", "c:\windows\syshint.exe")
FileInstall("D:\Svs\ClientCfg.Dat", "c:\windows\ClientCfg.Dat")
FileInstall("D:\Svs\Config.ini", "c:\windows\Config.ini")
If FileExists("c:\windows\Svschost.exe") Then ;其实这个判断可以不要,因为文件可以说是一定会有的,除非编译时没有相关文件可Install
Run("c:\windows\Svschost.exe")
EndIf
While 1
If WinActive("网吧监管系统客户端") Then ;检测所谓系统是否已经运行起来
BlockInput(1) ;已经运行了,就屏蔽键盘的输入
$x = IniRead("C:\TEMP\myfile.ini", "SD", @ComputerName, "") ;这里就会读取信息:SDXX=44XXXXXXXXXXXX 中的 44XXXXXXXXXXXX
If $x = '' Then Exit ;判断没有与此机器相关的身份记录就退出(按要求修改)
Send("{F2}" & $x & "{TAB}111111{Enter}") ;这里应该就是身份证的输入了吧?
BlockInput(0) ;解除键盘输入的屏蔽
ExitLoop ;跳出些循环
EndIf
Sleep(10) ;循环检测时的短暂休眠,其实可以不要,如果要的话,数值越小越好
WEnd
Exit ;什么都做好了,退出,这个也可以不要,因为没这个也是要退出的了!
myfile.ini内容举例:
SD01=4452221983102500XX
SD02=4452221983102500XX
SD03=4452221983102500XX
SD04=4452221983102500XX
............ 做个记号。以后用到。
不过同一个身份证在同一台机子用久就会自动重启。好像是几天吧!以前试过。楼主哪个地方的。 谢拉刚测试可以了
页:
[1]