Динамические массивы Visual FoxPro 9

Я пытаюсь получить динамические массивы из моего компонента ActiveX через Visual FoxPro 9, но безуспешно. (Отредактированный и рабочий пример)

LOCAL objMain, objAdapt

#define CrLf CHR(13) + CHR(10)

stMsg = ""

objMain = CREATEOBJECT('nnetsdk.oMain')

objMain.UnlockComponent("xxx-xxxxx-xxxxx-xx")

objAdapt = CREATEOBJECT('nnetsdk.oNetworkAdapter')

objAdapt.GetNetworkAdapters && Collects Network Adapter information

vrAdapters = objAdapt.cName && cName holds collected Network Adapter names

FOR EACH vrAdapter IN vrAdapters
 stMsg = stMsg + vrAdapter + CrLf
ENDFOR

MESSAGEBOX(stMsg,64,"List Network Adapters")

RELEASE objAdapt
RELEASE objMain

Может кто-нибудь объяснить мне, что не так с этим кодом?


person beic    schedule 23.04.2012    source источник


Ответы (1)


Я не знаю, какой у вас элемент управления ActiveX "nnetcom.oMain", но вы можете получить его напрямую из VFP через

lcComputerName = "."
loWMIService = GETOBJECT("winmgmts:\\" + lcComputerName + "\root\cimv2")
loItems = loWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48)

FOR EACH loItem IN loItems
    lcMACAddress = loItem.MACAddress
    IF !ISNULL(lcMACAddress)
        */ then, you can look at the object properties, such as 
        lcDescription = loItem.Description
        lcMacAddress = loItem.MACAddress
        lcNetConnectionID = NVL( loItem.NetConnectionID, "" )
   ENDIF
ENDFOR

цикл For Each циклически перебирает экземпляры класса структуры класса [Win32_NetworkAdapter]. Вы можете получить почти все, что хотите, из этого списка. 1

person DRapp    schedule 23.04.2012
comment
Привет, DRapp! Да, я знаю WMI, на самом деле мой компонент ActiveX использует его. objAdapt.cName содержит собранные имена сетевых адаптеров в массиве. - person beic; 23.04.2012
comment
@beic, тогда, думаю, мне было бы любопытно, зачем использовать элемент управления ActiveX, когда VFP может получить его и напрямую обработать массив. - person DRapp; 23.04.2012
comment
Да, но я разрабатываю своего рода компонент Framework... в любом случае, вы очень помогли мне с этой строкой кода FOR EACH loItem IN loItems, теперь она отлично работает... Я проголосовал за ваше предложение и принято как ответ! Спасибо... ;-) p.s. Я добавлю исправленный пример в свой пост! - person beic; 24.04.2012