如何让Combo中显示数据和实际数据不同?(内详)
本帖最后由 KLU3K 于 2009-6-24 16:24 编辑$Combo = GUICtrlCreateCombo("", 235, 19, 89, 21, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "3.0|0.2|1.0")
$Ver = GUICtrlRead($Combo)
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", $Ver)自己做了一个Combo,想让显示的数据和实际写入注册表的数据不同。怎么做?
比如Combo中列出了版本号是3.0,2.0,1.0三个数据。
写入注册表的时候写3.0,0.2,1.0
即:2.0是在Combo中显示的值,实际写入注册表是0.2这个数值呢?
现在的问题是:我在Combo中显示的是0.2,写注册表的时候没问题是0.2
但我需要在Combo中显示的2.0,而写注册表的时候是0.2
自己写的软件是修改某游戏版本号的,用来升级的,没有非法之用,希望能得到帮助。
P.S 我上传图片为附件怎么说我“无效图片”呢?是jpg的图片啊。论坛出问题了? 得用IE上图,其他浏览器DZ不支持 自己转换一下就可以了啊.
$Ver = GUICtrlRead($Combo)
If $Ver = 2.0 then
$Ver = 0.2
endif 本帖最后由 KLU3K 于 2009-6-24 15:03 编辑
3# ghostystep
感谢,但如果是这一个还好说,不能加很多if吧,循环我还不是很会写啊。
我现在写成:
$Ver = GUICtrlRead($Combo)
If $Ver = "2.0" Then
$Ver = "0.2"
EndIf
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", $Ver)
$CURVer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version")
If $CURVer = "0.2" Then
$CURVer = "2.0"
EndIf
If $Ver = "0.2" Then
$Ver = "2.0"
EndIf
MsgBox(0, "完成!已将版本修改为:" & $Ver, "修改完毕,获取到当前完整版本号是:【" & $CURVer & "】" & @CRLF & "请核对游戏主菜单底部的版本号是否和上方完整的版本号完全相符!")
感觉好囧啊 $Ver = GUICtrlRead($Combo)
If $Ver = "2.0" Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", "0.2")
else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", $ver)
EndIf
MsgBox(0, "完成!已将版本修改为:" & $Ver, "修改完毕,获取到当前完整版本号是:【" & $CURVer & "】" & @CRLF & "请核对游戏主菜单底部的版本号是否和上方完整的版本号完全相符!")
这样应该就可以了 $form = GUICreate('test')
$Combo = GUICtrlCreateCombo("", 100, 100, 89, 21, 3)
GUICtrlSetData(-1, "3.0|0.2|1.0", '3.0')
$button = GUICtrlCreateButton('test', 100, 200, 60, 30)
GUISetState(@SW_SHOW, $form)
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $button
$Ver = StringSplit(GUICtrlRead($Combo), '.')
If $Ver = '0' Then
If MsgBox(68, 0, '是否写入:' & $Ver & '.' & $Ver) = 6 Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", $Ver & '.' & $Ver)
Else
MsgBox(64, 0, '得到数值:' & $Ver & '.' & $Ver)
EndIf
EndSwitch
WEnd 本帖最后由 KLU3K 于 2009-6-24 16:21 编辑
5# ghostystep
写入问题解决了,不过感觉这样搞好像没必要做$CURVer = RegRead XXXXX了
因为我直接给赋值了 大概方法已经给,自己按你所想的去编吧,别人不可能在你提供的片面去帮你完成代码 现在我改成这样了
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
$Form1 = GUICreate("TEST", 200, 60, -1, -1)
$Combo1 = GUICtrlCreateCombo("3.0", 10, 5, 89, 21, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "2.0|1.0")
$Button1 = GUICtrlCreateButton("写入注册表", 110, 5, 85, 21)
$Button2 = GUICtrlCreateButton("测试完毕,清理注册表", 5, 33, 190, 21)
GUISetState(@SW_SHOW, $Form1)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1 ;版本号修改
$Ver = GUICtrlRead($Combo1)
If $Ver = "2.0" Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", "0.2")
Else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", $Ver)
EndIf
$CurVer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version")
If $CurVer = "0.2" Then
MsgBox(0, "完成!已将版本修改为:" & $Ver, "修改完毕,获取到当前完整版本号是:2.0")
Else
MsgBox(0, "完成!已将版本修改为:" & $Ver, "修改完毕,获取到当前完整版本号是: "& $CurVer)
EndIf
Case $Button2 ;清除注册表
RegDelete ("HKEY_LOCAL_MACHINE\SOFTWARE\GAME")
Exit
EndSwitch
WEnd
这样一来就和我的初衷不同了,我是想能准确一点,所以每次修改完毕再从注册表读取一次版本号,
这么一改,变成只要是选了2.0,就直接MsgBox成2.0。有点欺骗用户的感觉。呵呵,不过也没办法。
善意的谎言吧。谁让这个游戏版本号这么乱七八糟的。 没办法评分了。感谢楼上各位的热心人啊! 祝贺成功!
页:
[1]