KLU3K 发表于 2009-6-24 14:26:13

如何让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的图片啊。论坛出问题了?

kn007 发表于 2009-6-24 14:39:27

得用IE上图,其他浏览器DZ不支持

ghostystep 发表于 2009-6-24 14:41:17

自己转换一下就可以了啊.
$Ver = GUICtrlRead($Combo)
If $Ver = 2.0 then
   $Ver = 0.2
endif

KLU3K 发表于 2009-6-24 14:44:39

本帖最后由 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 & "请核对游戏主菜单底部的版本号是否和上方完整的版本号完全相符!")
感觉好囧啊

ghostystep 发表于 2009-6-24 15:17:52

$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 & "请核对游戏主菜单底部的版本号是否和上方完整的版本号完全相符!")

这样应该就可以了

liongodmien 发表于 2009-6-24 15:46:44

$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 15:50:10

本帖最后由 KLU3K 于 2009-6-24 16:21 编辑

5# ghostystep

写入问题解决了,不过感觉这样搞好像没必要做$CURVer = RegRead XXXXX了
因为我直接给赋值了

liongodmien 发表于 2009-6-24 15:53:04

大概方法已经给,自己按你所想的去编吧,别人不可能在你提供的片面去帮你完成代码

KLU3K 发表于 2009-6-24 16:23:38

现在我改成这样了
#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。有点欺骗用户的感觉。呵呵,不过也没办法。
善意的谎言吧。谁让这个游戏版本号这么乱七八糟的。

KLU3K 发表于 2009-6-24 16:26:30

没办法评分了。感谢楼上各位的热心人啊!

kn007 发表于 2009-6-24 17:01:59

祝贺成功!
页: [1]
查看完整版本: 如何让Combo中显示数据和实际数据不同?(内详)