2012-04-23 2 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 컨트롤이 무엇인지 모르겠지만, 당신은 [에서는 Win32_NetworkAdapter] 클래스 구조의 클래스 인스턴스를 통해 각 루프 사이클에 대한

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 

비아 VFP에서 직접 얻을 수 있습니다 . 그 목록에서 원하는 거의 모든 것을 얻을 수 있습니다. 1

+0

안녕하세요. DRapp. 예, WMI를 알고 있습니다. 사실 ActiveX 구성 요소에서 사용하고 있습니다. ** objAdapt.cName **은 수집 된 네트워크 어댑터 이름을 Array에 보유합니다. – beic

+0

@beic, 그렇다면 VFP가 ActiveX 컨트롤을 사용하여 배열을 직접 처리 할 수있는 이유는 궁금 할 것입니다. – DRapp

+0

네,하지만 일종의 Framework 구성 요소를 개발 중입니다 ... 어쨌든, 당신은 코드의 해당 줄을 많이 도왔습니다 ** loItems ** loItems **에서 이제 완벽하게 작동합니다 ... 저는 여러분에게 제안을지지하고 답변! 고마워 ... ;-) p.s. 내 게시물에 수정 된 예제를 추가합니다! – beic

관련 문제