Java Jacob 주어진 Win32_ * Class 객체의 모든 속성 검색
문제
현재 Java-Base Cross-Platform 소프트웨어 대리점에서 일하고 있으며 사용자가 손 앞에 모든 설정을 수행하지 못하도록 원시 OS 메커니즘을 사용하기로 선택했습니다.
SSH2 및 JACOB 용 JSCH를 Jaker 용으로 선택했습니다. Jacob이 Windows를 시작한 호스트로 제한하지만 그것은 내가 함께 살 수있는 것입니다.
Jacob 주위에 래퍼를 쓰고 WMI를 통해 대상과 이야기하기 위해 네이티브 메커니즘을 사용하여 약간의 문제로 실행 중입니다. 주어진 Win32_ 클래스 객체에 사용할 수있는 모든 속성 목록을 검색하려고 시도하고 있으며 수행 할 수 없었습니다.
이 링크는 vb http : //www.vbsedit로 표시 할 수 있습니다. .com / scripts / misc / wmi / scr_1333.asp
누군가를 알아낼 수 있었는지 궁금해하고있었습니다.편집 : (코드 스 니펫)
item = enumVariant.nextElement().toDispatch();
//Dispatch.class returns a variant which can convert to java form
String serviceName = Dispatch.call(item, "Name").toString();
String servicePath = Dispatch.call(item,"PathName").toString();
int servicePID = Dispatch.call(item,"ProcessId").getInt();
//System.out.println("Service: "+serviceName+" ServicePath: "+servicePath+" PID: "+servicePID);
//System.out.println(serviceName+" "+servicePath+" "+servicePID);
list.add(serviceName+" "+servicePID);
.
코드는 개별 속성을 요구할 수 있지만 모든 속성을 요청하는 것이 좋습니다.
해결책
여기에 귀하의 질문에 대한 답변이 있습니다.나는 당신의 문제가 어디에 있는지 모르기 때문에 나는 그렇게 희망합니다.나는 답변자가 모든 것을 쓸 수 있도록 답변을 요구하는 대신 코드의 일부를 제공해야한다고 생각합니다.
이것은 또한 더 일반적인 문제에 대한 답변 일 수 있습니다. 방금 배웠습니다 :
컬렉션의 모든 항목을 열거하는 방법 For Each
구현
EnumVariant
Jacob 클래스를 사용해야합니다.
import com.jacob.activeX.*;
import com.jacob.com.*;
public class testJacob {
public static void main(String args[]) {
String sMoniker = "winmgmts:{impersonationLevel=impersonate}!" +
"\\\\.\\root\\cimv2";
Dispatch dServ = new Dispatch(sMoniker);
Variant v = Dispatch.call(dServ, "SubclassesOf");
// SWbemObjectSet object
// http://msdn.microsoft.com/en-us/library/aa393762%28v=vs.85%29.aspx
Dispatch objSet = v.getDispatch();
System.out.println("object count: " + objSet.get(objSet, "count"));
int cObj = 0;
EnumVariant en = new EnumVariant(objSet);
while (en.hasMoreElements()) {
// SWbemObject object
// http://msdn.microsoft.com/en-us/library/aa393741(v=vs.85).aspx
Dispatch dItem = en.nextElement().getDispatch();
Dispatch dPath = Dispatch.get(dItem, "Path_").getDispatch();
String sClass = Dispatch.get(dPath, "Class").getString();
System.out.println("path: " + sClass);
Dispatch dObj = Dispatch.call(dServ, "get", sClass).getDispatch();
Dispatch dProps = Dispatch.call(dObj, "Properties_").getDispatch();
EnumVariant enProp = new EnumVariant(dProps);
while (enProp.hasMoreElements()) {
Dispatch dProp = enProp.nextElement().getDispatch();
String sProp = Dispatch.get(dProp, "name").getString();
System.out.println("property: " + sProp);
}
if (++cObj >= 5)
break;
}
}
}
. 제휴하지 않습니다 StackOverflow