newuser
发表于 2010-9-15 07:50:17
回复 15# 131738
老大测试的时候没有:
ERROR: $PROCESS_VM_READ previously declared as a 'Const'
提示错误吗?
netegg
发表于 2010-9-15 07:54:54
本帖最后由 netegg 于 2010-9-15 07:58 编辑
回复 3# nxbigdaddy
不一定吧,如果补丁的键删除了呢,有的清理软件就这么干只是把键删了,但补丁本身并不卸载
补丁最好走update那个键
131738
发表于 2010-9-15 14:54:13
回复 16# newuser
没有!看了你的问题,但看不懂。。。。
yingf20
发表于 2010-9-15 15:01:22
#Include <Array.au3>
#Include <WinAPIEx.au3>
Global $hKey, $Count, $Num = 1
$hKey = _WinAPI_RegOpenKey($HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\.NETFramework')
If @error Then
MsgBox(0,0,"未安装.NETFramework")
Exit
Else
$Count = _WinAPI_RegQueryInfoKey($hKey)
Dim $reg_array
For $i = 0 To $Count
If StringRegExp( _WinAPI_RegEnumKey($hKey, $i),'v\d\.\d.*',0) Then
$Num+=1
ReDim $reg_array[$Num]
$reg_array[$Num-1]=_WinAPI_RegEnumKey($hKey, $i)
$reg_array=UBound($reg_array)-1
EndIf
Next
_WinAPI_RegCloseKey($hKey)
_ArrayDisplay($reg_array)
EndIf
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
查这个下面的键,windows的程序管理器就是读这里的信息,net framework 和其他运行库、组件、补丁都可以在这里找到的。
#include <Array.au3>
#include <WinAPIEx.au3>
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
Opt('MustDeclareVars', 1)
_Main()
Func _Main()
Local $iI, $iTimer, $hListView
; 创建界面
GUICreate("ListView Add Array", 500, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 460, 268)
_GUICtrlListView_SetUnicodeFormat($hListView, False)
GUISetState()
; 添加列
_GUICtrlListView_AddColumn($hListView, "键名", 100)
_GUICtrlListView_AddColumn($hListView, "软件名", 100)
_GUICtrlListView_AddColumn($hListView, "安装路径", 100)
_GUICtrlListView_AddColumn($hListView, "卸载文件名", 100)
Global $hKey, $Count, $Num = 1
$hKey = _WinAPI_RegOpenKey($HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall')
If @error Then
MsgBox(0, 0, "未安装.NETFramework")
Exit
Else
$Count = _WinAPI_RegQueryInfoKey($hKey)
_GUICtrlListView_SetItemCount($hListView, $Count)
Dim $reg_array[$Count]
For $i = 0 To UBound($reg_array) - 1
$reg_array[$i] = _WinAPI_RegEnumKey($hKey, $i)
$reg_array[$i] = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $reg_array[$i], "DisplayName")
$reg_array[$i] = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $reg_array[$i], "InstallDir")
$reg_array[$i] = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $reg_array[$i], "UninstallString")
Next
_WinAPI_RegCloseKey($hKey)
;_ArrayDisplay($reg_array)
EndIf
_GUICtrlListView_AddArray($hListView, $reg_array)
; 循环至用户退出
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
不知道这些方法是不是你想要的。你参考一下。
newuser
发表于 2010-9-15 15:15:03
回复 18# 131738
执行楼下的代码,有错,看图:
这回能看懂我的问题了吧!
3mile
发表于 2010-9-15 15:18:41
不知道这些方法是不是你想要的。你参考一下。
yingf20 发表于 2010-9-15 15:01 http://www.autoitx.com/images/common/back.gif
这代码看着咋这么眼熟呢?
131738
发表于 2010-9-15 17:04:16
回复131738
执行楼下的代码,有错,看图:
这回能看懂我的问题了吧!
newuser 发表于 2010-9-15 15:15 http://www.autoitx.com/images/common/back.gif
仍然没问题,你看看库文件 <WinAPIEx.au3> 的版本及路径。是否有多个不同版本的 <WinAPIEx.au3> 存在。。。。。。。。。。
newuser
发表于 2010-9-16 07:55:42
回复 22# 131738
有2个这样的文件,但文件版本都是V2.0,大小也一样,应该是1个文件,我在测试的时候,分别把他们放在了"脚本所在的目录及Autoit的安装目录下的include目录下",但结果都如我的截图,能否把阁下的测试代码包括winapiex.au3打包我在测试一下?
3mile
发表于 2010-9-16 09:02:44
回复 23# newuser
先看包内的.EXE执行正常吗?
再运行.AU3看执行正常吗?
karlpopper
发表于 2010-9-16 10:41:57
这个不错啊 拿分
lhy6456210
发表于 2010-9-16 10:52:51
看不懂顶起来
newuser
发表于 2010-9-16 11:33:22
回复 24# 3mile
img]exe正常.au3还是老毛病![
3mile
发表于 2010-9-16 12:33:37
回复 27# newuser
.exe正常的话,应该是你的AU3有问题了。
全新安装一个AU3吧。
newuser
发表于 2010-9-16 13:32:48
回复 28# 3mile
重装AU3就OK了!
newuser
发表于 2010-9-16 13:34:11
回复 29# newuser