2012-04-23 49 views
0

我想從我的ActiveX組件槽通過Visual FoxPro 9獲得動態數組,但沒有運氣。 (編輯和工作示例)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 

誰能給我解釋一下什麼是錯的代碼?

回答

1

我不知道你的「nnetcom.oMain」 ActiveX控件是什麼,但你可以直接從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

+0

嗨DRapp,是的,我知道WMI,實際上我的ActiveX組件使用它。 ** objAdapt.cName **在Array中保存收集的網絡適配器名稱。 – beic 2012-04-23 19:27:23

+0

@beic,那麼我想我會好奇爲什麼在VFP可以直接使用ActiveX控件並直接處理數組時使用ActiveX控件。 – DRapp 2012-04-23 19:51:17

+0

是的,但我正在開發一種框架組件...無論如何,你幫助我很多的代碼行**對於每個項目在項目**,現在它的工作完美...我upvoted你的主張,接受爲一個答案!謝謝...... ;-) p.s.我會將更正後的示例添加到我的帖子中! – beic 2012-04-23 20:02:24