找回密码
 加入
搜索
查看: 3166|回复: 13

刷卡工具终于成功了!但是程序最后还是有一点点问题,请高手指教!

[复制链接]
发表于 2009-10-16 18:50:42 | 显示全部楼层 |阅读模式
本帖最后由 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[6]")
        $MACSize = DllStructCreate("int")
        DllStructSetData($MACSize, 1, 6)
        $r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
        $iIP = $r[0]
        $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
忘记数据库文件了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-10-16 20:29:49 | 显示全部楼层
小心点吧,我之前就是做免刷卡工具的,可是最后换来的是15天的治安拘留
发表于 2009-10-16 23:09:31 | 显示全部楼层
15天的治安拘留
发表于 2009-10-16 23:48:05 | 显示全部楼层
大概看了下,
$rs.close
$addfld.Close
好像是多余的,任何情况都不会执行。且每次data()时都要重新打开数据库,总之代码很乱,思路更乱.
发表于 2009-10-17 00:04:26 | 显示全部楼层
亮点在2楼

10字补丁.exe
发表于 2009-10-17 00:04:33 | 显示全部楼层
亮点在2楼

10字补丁.exe
 楼主| 发表于 2009-10-17 04:14:47 | 显示全部楼层
大概看了下,
$rs.close
$addfld.Close
好像是多余的,任何情况都不会执行。且每次data()时都要重新打开数据库,总之代码很乱,思路更乱.
bing614 发表于 2009-10-16 23:48

呵呵 代码我没有CTRL+T 所以看着是乱了点。但是思路不算太乱吧。就是程序开始就硬件认证 人证通过的话 开始随即生成卡号 生成完了打开数据库 看卡号是否在使用 如果使用 从新运行kaohao() 如果没有使用 直接运行sj()
发表于 2009-10-17 10:42:53 | 显示全部楼层
這玩意是什麼干什麼的?會有監獄15天遊?
 楼主| 发表于 2009-10-20 19:33:20 | 显示全部楼层
代码整理了以下 请高手给咱看看呗!
 楼主| 发表于 2009-10-20 19:33:33 | 显示全部楼层
代码整理了以下 请高手给咱看看呗!
发表于 2009-10-21 00:00:11 | 显示全部楼层
本帖最后由 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 
;很晚了,,目前只想到这种方法解决你卡使用完后报错
发表于 2009-10-21 00:41:11 | 显示全部楼层
$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)
放在循环体外面,这样不必每次都要打开数据库,还有退出时关闭数据库
发表于 2009-10-21 01:30:07 | 显示全部楼层
$random = IniRead(@ScriptDir & "\config.ini", "配置", "random", 0)

文件名 = @ScriptDir & "\config.ini"
字段名 = "配置"
关键字 = "random" ;???????怎么不是“0078571023”,如果random是个变量也得加上$去掉"",如果是函数,那也得在后面加上个()
发表于 2009-10-21 01:34:38 | 显示全部楼层
好像很危险哦 !  但是这个东西值得研究
看起来的错误提示 好像是数据库部分代码有问题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 18:21 , Processed in 0.096913 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表