找回密码
 加入
搜索
查看: 2364|回复: 5

[AU3基础] GUICtrlCreateCombo地一项为空[已解决]

[复制链接]
发表于 2010-12-17 13:38:26 | 显示全部楼层 |阅读模式
本帖最后由 yikang8888 于 2010-12-22 15:48 编辑

如下代码运行后Combo的第一项为空的,请高手帮忙解决一下,谢谢了
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>

Local $test, $iNICIndex
$test = _UpCmpLanNameIDInfo()
        ; 创建“网卡选择”窗口
        Local $hNICWnd, $hOKButton, $hIfTable
        $hNICWnd = GUICreate("测试" & " - 网卡选择", 404, 118)
        GUICtrlCreateLabel("检测到本机安装有多个网络适配器,请选择用于更新的网卡。", 16, 16, 340, 24)
        $hIfTable = GUICtrlCreateCombo("", 16, 48, 372, 12 * $test[0][0], BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
        For $i = 2 To $test[0][0]
                GUICtrlSetData(-1,  $test[$i][1])
        Next
        $hOKButton = GUICtrlCreateButton("确定(&O)", 165, 80, 76, 22, $BS_DEFPUSHBUTTON)
        ; 窗口事件
        GUISetState(@SW_SHOW)
        While 1
                Switch GUIGetMsg()
                        Case $hOKButton, $GUI_EVENT_CLOSE
                                $iNICIndex = GUICtrlRead($hIfTable)
                                MsgBox(0, 0, $iNICIndex)
                                ExitLoop
                EndSwitch
        WEnd




Func _UpCmpLanNameIDInfo()
        ;======================================================
        ;
        ; 函数名称:        _UpCmpLanNameIDInfo()
        ; 详细信息:        获取系统所有网卡名称和ID信息
        ; 返回值说明:
        ; 以二维数组方式返回.例如 $info=_UpCmpLanNameIDInfo()
        ; $info[1][0] 第一块网卡的名称
        ; $info[2][0] 第二块网卡的名称
        ; $info[1][1] 第一块网卡的ID
        ; $info[2][1] 第二块网卡的ID
        ; 其他网卡信息依次类推。。。
        ; 作者:      viplight (viplight@qq.com)
        ; QQ: 530417369
        ;======================================================
        Local $colItems = ""
        Local $strComputer = "localhost"
        Local $objWMIService
        Local $wbemFlagReturnImmediately = 0x10
        Local $wbemFlagForwardOnly = 0x20
        Local $UpCmprAdapterID = 0
        Local $UpCmprAdapterHostName = ""
        Local $UpCmpLanNameID[10][2]
        $UpCmpLanNameID[0][0] = 0
        $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
        $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_TSNetworkAdapterListSetting", "WQL", _
                        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

        If IsObj($colItems) Then
                For $objItem In $colItems
                        $UpCmpLan = $objItem.Description
                        $UpCmpID = $objItem.NetworkAdapterID
                        $UpCmprAdapterID += 1
                        $UpCmpLanNameID[0][0] = $UpCmprAdapterID
                        $UpCmpLanNameID[$UpCmprAdapterID][0] = $UpCmpLan
                        $UpCmpLanNameID[$UpCmprAdapterID][1] = $UpCmpID
                Next
        EndIf
        Return $UpCmpLanNameID
EndFunc   ;==>_UpCmpLanNameIDInfo
发表于 2010-12-17 21:19:12 | 显示全部楼层
帮顶.........................
发表于 2010-12-17 21:46:24 | 显示全部楼层
本帖最后由 yhxhappy 于 2010-12-17 21:48 编辑

你的代码在我的笔记本上一个网上都找不到了,我只好做了一个数组演示
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>

Local $test, $iNICIndex
;Local $test = _UpCmpLanNameIDInfo()
Local $test[5][2]
$test[0][0] = 4
$test[2][1] = "网卡1"
$test[3][1] = "网卡2"
$test[4][1] = "网卡3"
        ; 创建“网卡选择”窗口
        Local $hNICWnd, $hOKButton, $hIfTable, $txt = ""
        $hNICWnd = GUICreate("测试" & " - 网卡选择", 404, 118)
        GUICtrlCreateLabel("检测到本机安装有多个网络适配器,请选择用于更新的网卡。", 16, 16, 340, 24)
        $hIfTable = GUICtrlCreateCombo("", 16, 48, 372, 12, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))

        For $i = 2 To $test[0][0]
                        $txt &= $test[$i][1] & "|"               
        Next
                If $txt <> "" then GUICtrlSetData($hIfTable, $txt, $test[$test[0][0]][1])        ;此处的 $test[$test[0][0]][1] 表示默认选中最后一项,如果想默认选中第一项,则使用 $test[2][1]
        $hOKButton = GUICtrlCreateButton("确定(&O)", 165, 80, 76, 22, $BS_DEFPUSHBUTTON)
        ; 窗口事件
        GUISetState(@SW_SHOW)
        While 1
                Switch GUIGetMsg()
                        Case $hOKButton, $GUI_EVENT_CLOSE
                                $iNICIndex = GUICtrlRead($hIfTable)
                                MsgBox(0, 0, $iNICIndex)
                                ExitLoop
                EndSwitch
        WEnd




Func _UpCmpLanNameIDInfo()
        ;======================================================
        ;
        ; 函数名称:        _UpCmpLanNameIDInfo()
        ; 详细信息:        获取系统所有网卡名称和ID信息
        ; 返回值说明:
        ; 以二维数组方式返回.例如 $info=_UpCmpLanNameIDInfo()
        ; $info[1][0] 第一块网卡的名称
        ; $info[2][0] 第二块网卡的名称
        ; $info[1][1] 第一块网卡的ID
        ; $info[2][1] 第二块网卡的ID
        ; 其他网卡信息依次类推。。。
        ; 作者:      viplight (viplight@qq.com)
        ; QQ: 530417369
        ;======================================================
        Local $colItems = ""
        Local $strComputer = "localhost"
        Local $objWMIService
        Local $wbemFlagReturnImmediately = 0x10
        Local $wbemFlagForwardOnly = 0x20
        Local $UpCmprAdapterID = 0
        Local $UpCmprAdapterHostName = ""
        Local $UpCmpLanNameID[10][2]
        $UpCmpLanNameID[0][0] = 0
        $objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\CIMV2")
        $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_TSNetworkAdapterListSetting", "WQL", _
                        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

        If IsObj($colItems) Then
                For $objItem In $colItems
                        $UpCmpLan = $objItem.Description
                        $UpCmpID = $objItem.NetworkAdapterID
                        $UpCmprAdapterID += 1
                        $UpCmpLanNameID[0][0] = $UpCmprAdapterID
                        $UpCmpLanNameID[$UpCmprAdapterID][0] = $UpCmpLan
                        $UpCmpLanNameID[$UpCmprAdapterID][1] = $UpCmpID
                Next
        EndIf
        Return $UpCmpLanNameID
EndFunc   ;==>_UpCmpLanNameIDInfo

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-12-18 14:11:24 | 显示全部楼层
谢谢,
 楼主| 发表于 2010-12-28 14:42:22 | 显示全部楼层
感谢大家的帮助
发表于 2010-12-28 20:33:36 | 显示全部楼层
呵呵学习一下。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-30 23:31 , Processed in 0.077746 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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