刷卡工具终于成功了!但是程序最后还是有一点点问题,请高手指教!
本帖最后由 nmgwddj 于 2009-10-20 19:32 编辑首先 鸣谢
ID:newx
ID:wxb2422
程序需要2个INI配置文件。
配置文件1
config.ini
内容
[配置]
Random=10 ;设置有多少个卡号
配置文件2
data.ini
内容
0078571023
0078558650
0078558581
0078550241
0078549468
0078551771
0078558565
0078557337
0078553524
0078551796
主要问题出现在把所有卡号刷完之后,提示一个错误。
请高手帮忙给看下 我在认为就是在读取数据库判断卡号是否存在的时候出现的问题 但是真不知道从哪入手修改#AutoIt3Wrapper_Res_Description=内蒙古赤峰DJ
#AutoIt3Wrapper_Res_Fileversion=1.0.0.1
#AutoIt3Wrapper_Res_LegalCopyright=QQ 499084289
#AutoIt3Wrapper_Res_Comment=内蒙古赤峰DJ
#include <Constants.au3>
Opt("TrayOnEventMode", 1)
Opt("GUIOnEventMode", 1)
Opt("TrayMenuMode", 1)
$pause = TrayCreateItem('暂停')
TrayItemSetOnEvent(-1, "Pause")
$About = TrayCreateItem("关于")
TrayItemSetOnEvent(-1, "About")
$Exit = TrayCreateItem("退出")
TrayItemSetOnEvent(-1, "quiet")
TraySetState()
AdlibEnable('pau', 100)
Dim $a
Dim $Verison = "同联刷卡助手"
$paused = 0
Reg()
Func kahao()
$random = IniRead(@ScriptDir & "\config.ini", "配置", "random", 0)
$Val = Random(1, $random, 1)
$kahao = FileReadLine("data.ini", $Val)
$a = $kahao
data()
EndFunc ;==>kahao
;判断卡号是否上机
Func data()
$datename = "Data.mdb"
$datepass = "áíùaidf/emfid#dfDS~"
$Strn = $a
$addfld = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $datename & ";Jet Oledb:Database Password=" & $datepass)
$RS.ActiveConnection = $addfld
$dqml = "select * from PCStatus where UserCardNO= '" & $Strn & "'"
$RS.Open($dqml)
If $RS.eof And $RS.bof Then
sj()
Else
kahao()
EndIf
EndFunc ;==>data
Func sj()
WinWait("用户上机")
WinActivate("用户上机")
Send("@" & $a)
Send("{enter}")
WinWait("吧台程序提示")
WinActivate("吧台程序提示")
Send("{enter}")
Send("{tab}{tab}{tab}")
WinWaitClose("用户上机")
kahao()
EndFunc ;==>sj
Func pause()
$paused = Not $paused
If $paused Then
TrayItemSetState($pause, 65)
Else
TrayItemSetState($pause, 68)
EndIf
EndFunc ;==>pause
Func pau()
While $paused
Sleep(100)
WEnd
EndFunc ;==>pau
Func About()
MsgBox(64, "关于", $Verison & @CRLF & @CRLF & @CRLF & "QQ499084289" & @CRLF & @CRLF & @CRLF & "内蒙古赤峰DJ")
EndFunc ;==>About
Func quiet()
Exit
EndFunc ;==>quiet
;硬件认证
Func Reg()
If (_GetMAC(@IPAddress1) <> "0019214950B6") Then
MsgBox(64, "!同联刷卡助手-错误", "您的机器没有注册同联刷卡助手" & @CRLF & "请联系QQ 499084289 注册")
Exit
Else
MsgBox(64, "提示", "程序成功运行", 10)
kahao()
EndIf
EndFunc ;==>Reg
Func _GetMAC($sIP)
Local $MAC, $MACSize
Local $i, $s, $r, $iIP
$MAC = DllStructCreate("byte")
$MACSize = DllStructCreate("int")
DllStructSetData($MACSize, 1, 6)
$r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
$iIP = $r
$r = DllCall("iphlpapi.dll", "int", "SendARP", "int", $iIP, "int", 0, "ptr", DllStructGetPtr($MAC), "ptr", DllStructGetPtr($MACSize))
$s = ""
For $i = 0 To 5
$s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2)
Next
Return $s
EndFunc ;==>_GetMAC忘记数据库文件了 小心点吧,我之前就是做免刷卡工具的,可是最后换来的是15天的治安拘留
:face (30): 15天的治安拘留
:face (27): 大概看了下,
$rs.close
$addfld.Close
好像是多余的,任何情况都不会执行。且每次data()时都要重新打开数据库,总之代码很乱,思路更乱. 亮点在2楼
10字补丁.exe 亮点在2楼
10字补丁.exe 大概看了下,
$rs.close
$addfld.Close
好像是多余的,任何情况都不会执行。且每次data()时都要重新打开数据库,总之代码很乱,思路更乱.
bing614 发表于 2009-10-16 23:48 http://www.autoitx.com/images/common/back.gif
呵呵 代码我没有CTRL+T 所以看着是乱了点。但是思路不算太乱吧。就是程序开始就硬件认证 人证通过的话 开始随即生成卡号 生成完了打开数据库 看卡号是否在使用 如果使用 从新运行kaohao() 如果没有使用 直接运行sj() 這玩意是什麼干什麼的?會有監獄15天遊? 代码整理了以下 请高手给咱看看呗! 代码整理了以下 请高手给咱看看呗! 本帖最后由 wxb2422 于 2009-10-21 22:42 编辑
config.ini做成一个就行了。内容如下(all是卡的总数,实际有多少张卡就填多少)
[配置]
all=3
1=0078571023
2=0078558650
3=0078558581
代码中kahao()可以去掉。
然后把下面这段加上去$all=IniRead("config.ini", "配置","all","3")
for $i=1 to $all
if data() then
MsgBox(16,"此卡未使用",IniRead("config.ini", "配置",$i,""));这里换成开机的代码
exit
endif
next
MsgBox(16,"提示","卡号已使用完")
Func data()
$datename = "Data.mdb"
$datepass = "áíùaidf/emfid#dfDS~"
$addfld = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $datename & ";Jet Oledb:Database Password=" & $datepass)
$RS.ActiveConnection = $addfld
$Strn = IniRead("config.ini", "配置",$i,"")
$dqml = "select * from PCStatus where UserCardNO= '" & $Strn & "'"
$RS.Open($dqml)
return($RS.bof)
$rs.close
$addfld.Close
EndFunc ;很晚了,,目前只想到这种方法解决你卡使用完后报错 $datename = "Data.mdb"
$datepass = "áíùaidf/emfid#dfDS~"
$Strn = $a
$addfld = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $datename & ";Jet Oledb:Database Password=" & $datepass)
放在循环体外面,这样不必每次都要打开数据库,还有退出时关闭数据库 $random = IniRead(@ScriptDir & "\config.ini", "配置", "random", 0)
文件名 = @ScriptDir & "\config.ini"
字段名 = "配置"
关键字 = "random" ;???????怎么不是“0078571023”,如果random是个变量也得加上$去掉"",如果是函数,那也得在后面加上个() 好像很危险哦 !但是这个东西值得研究
看起来的错误提示 好像是数据库部分代码有问题
页:
[1]