找回密码
 加入
搜索
查看: 2786|回复: 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 编辑

你的代码在我的笔记本上一个网上都找不到了,我只好做了一个数组演示

  1. #include <GUIConstantsEx.au3>
  2. #include <ButtonConstants.au3>
  3. #include <ComboConstants.au3>

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

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




  31. Func _UpCmpLanNameIDInfo()
  32.         ;======================================================
  33.         ;
  34.         ; 函数名称:        _UpCmpLanNameIDInfo()
  35.         ; 详细信息:        获取系统所有网卡名称和ID信息
  36.         ; 返回值说明:
  37.         ; 以二维数组方式返回.例如 $info=_UpCmpLanNameIDInfo()
  38.         ; $info[1][0] 第一块网卡的名称
  39.         ; $info[2][0] 第二块网卡的名称
  40.         ; $info[1][1] 第一块网卡的ID
  41.         ; $info[2][1] 第二块网卡的ID
  42.         ; 其他网卡信息依次类推。。。
  43.         ; 作者:      viplight (viplight@qq.com)
  44.         ; QQ: 530417369
  45.         ;======================================================
  46.         Local $colItems = ""
  47.         Local $strComputer = "localhost"
  48.         Local $objWMIService
  49.         Local $wbemFlagReturnImmediately = 0x10
  50.         Local $wbemFlagForwardOnly = 0x20
  51.         Local $UpCmprAdapterID = 0
  52.         Local $UpCmprAdapterHostName = ""
  53.         Local $UpCmpLanNameID[10][2]
  54.         $UpCmpLanNameID[0][0] = 0
  55.         $objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\CIMV2")
  56.         $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_TSNetworkAdapterListSetting", "WQL", _
  57.                         $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

  58.         If IsObj($colItems) Then
  59.                 For $objItem In $colItems
  60.                         $UpCmpLan = $objItem.Description
  61.                         $UpCmpID = $objItem.NetworkAdapterID
  62.                         $UpCmprAdapterID += 1
  63.                         $UpCmpLanNameID[0][0] = $UpCmprAdapterID
  64.                         $UpCmpLanNameID[$UpCmprAdapterID][0] = $UpCmpLan
  65.                         $UpCmpLanNameID[$UpCmprAdapterID][1] = $UpCmpID
  66.                 Next
  67.         EndIf
  68.         Return $UpCmpLanNameID
  69. 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, 2026-9-21 09:12 , Processed in 0.153446 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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