找回密码
 加入
搜索
查看: 1583|回复: 10

如何让Combo中显示数据和实际数据不同?(内详)

[复制链接]
发表于 2009-6-24 14:26:13 | 显示全部楼层 |阅读模式
本帖最后由 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的图片啊。论坛出问题了?
发表于 2009-6-24 14:39:27 | 显示全部楼层
得用IE上图,其他浏览器DZ不支持
发表于 2009-6-24 14:41:17 | 显示全部楼层
自己转换一下就可以了啊.
$Ver = GUICtrlRead($Combo)
If $Ver = 2.0 then
   $Ver = 0.2
endif
 楼主| 发表于 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 & "请核对游戏主菜单底部的版本号是否和上方完整的版本号完全相符!")
感觉好囧啊
发表于 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 & "请核对游戏主菜单底部的版本号是否和上方完整的版本号完全相符!")

这样应该就可以了

评分

参与人数 1金钱 +5 收起 理由
KLU3K + 5 我很赞同

查看全部评分

发表于 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[2] = '0' Then
                                If MsgBox(68, 0, '是否写入:' & $Ver[2] & '.' & $Ver[1]) = 6 Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\GAME", "Version", "REG_SZ", $Ver[2] & '.' & $Ver[1])
                        Else
                                MsgBox(64, 0, '得到数值:' & $Ver[1] & '.' & $Ver[2])
                        EndIf
        EndSwitch
WEnd

评分

参与人数 1金钱 +5 收起 理由
KLU3K + 5 我很赞同

查看全部评分

 楼主| 发表于 2009-6-24 15:50:10 | 显示全部楼层
本帖最后由 KLU3K 于 2009-6-24 16:21 编辑

5# ghostystep

写入问题解决了,不过感觉这样搞好像没必要做$CURVer = RegRead XXXXX了
因为我直接给赋值了
发表于 2009-6-24 15:53:04 | 显示全部楼层
大概方法已经给,自己按你所想的去编吧,别人不可能在你提供的片面去帮你完成代码
 楼主| 发表于 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。有点欺骗用户的感觉。呵呵,不过也没办法。
善意的谎言吧。谁让这个游戏版本号这么乱七八糟的。
 楼主| 发表于 2009-6-24 16:26:30 | 显示全部楼层
没办法评分了。感谢楼上各位的热心人啊!
发表于 2009-6-24 17:01:59 | 显示全部楼层
祝贺成功!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-10 09:32 , Processed in 0.107091 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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