|
本帖最后由 yiruirui 于 2010-7-12 11:30 编辑
我写了一个智能显卡检测安装工具,用的是Everest检测的,检测可以成功实现.
就是显卡驱动安装好了后没有反应,不知道是哪里出错了,我用的7Z压缩包,里面包含的是驱动内容,其实就是解压驱动到指定目录,然后向注册表写一句话,请问大家我这样哪里错了,贴出关键代码如下:
Func Button1Click()
;开始循环智能判断设备驱动
Disable_all()
Dim $filepath_string
$tmp_path = ""
For $i = 1 To $DrvList[0][0]
If GUICtrlRead(Eval("Checkbox" & $i)) <> $GUI_CHECKED Then ContinueLoop ;如果未选择则进入下一个循环
$AutoCheckDrv = StringSplit($DrvList[$i][1], ";")
If $AutoCheckDrv[0] > 1 And StringInStr($All_keyname,$AutoCheckDrv[1])>0 Then ;如果需要智能判断且字段名没有错误则进入
$device_keyword = IniReadSection($Cfg_file, $AutoCheckDrv[1])
For $j = 3 To $AutoCheckDrv[0]
$Device_Drv = IniRead($EvePath & "\Reports\report.ini", $AutoCheckDrv[2], $AutoCheckDrv[$j], "") ;读取报告
$Device_Drv = CleanKeword($Device_Drv) ;清除无效关键字
If StringLen($Device_Drv) < 1 Then ContinueLoop ;如果硬件信息中无内容则继续判断下一个
For $k = 1 To $device_keyword[0][0]
If $device_keyword[$k][0] = "other" Then ContinueLoop ;如果关键字是other则退出循环
If StringInStr($Device_Drv, $device_keyword[$k][0]) <> 0 And Not (StringInStr($filepath_string, $device_keyword[$k][1])) Then
$filepath_string = $filepath_string & ";" & $device_keyword[$k][1]
$tmp_path = $tmp_path & ";" & $device_keyword[$k][1]
EndIf
Next
Next
If StringLen($tmp_path) < 1 Then ;如果未搜索到相应的驱动;则加入other
$temp1 = IniRead($Cfg_file, $AutoCheckDrv[1], "other", "")
If FileExists(@ScriptDir & "\" & $temp1) Then $filepath_string &= ";" & $temp1
$temp1 = ""
EndIf
Else ;如何不需要自动判断则加入解压列表
$filepath_string &= ";" & $AutoCheckDrv[1]
EndIf
Next
;解压所需驱动
;MsgBox(4096, "所需解压的驱动", "路径为:" & $filepath_string & @CRLF)
GUICtrlSetData($Progress1,0) ;滚动条归零
$ext_tmp = StringSplit($filepath_string, ";") ;获得各文件路径数组
For $i = 1 To $ext_tmp[0]
If StringLen($ext_tmp[$i]) > 0 Then
GUICtrlSetData($lab2, "正在解压:" & @ScriptDir&"\"&$ext_tmp[$i])
unzip(@ScriptDir&"\"&$ext_tmp[$i], $Ex_path) ;调用unzip函数进行解压缩
GUICtrlSetData($Progress1,Round(($i/$ext_tmp[0])*100)-5) ;滚动条前进
EndIf
Next
GUICtrlSetData($Progress1,95) ;滚动条前进
;将驱动路径写入注册表
If Stringlen($filepath_string) > 0 Then
GUICtrlSetData($lab2, "正在将驱动路径写入注册表,请稍等...")
$driver_path = '%SystemRoot%\Inf' & DevicePath($Ex_path)
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "DevicePath", "REG_EXPAND_SZ", $driver_path) ;加入新记录
EndIf
GUICtrlSetData($Progress1,100) ;滚动条前进
GUICtrlSetData($lab2, "驱动已成功写入注册表,正在退出...")
DirRemove($EvePath, 1)
Sleep(1500)
Exit ;退出程序,多余文件删除在 EndsSript() 中进行
EndFunc |
评分
-
查看全部评分
|