Domanda

Attualmente sto lavorando su un distributore di software a piattaforma multipiattaforma Java-Base e ho scelto di utilizzare i meccanismi nativi del sistema operativo per evitare che gli utenti di dover effettuare qualsiasi configurazione prima della mano.

Ho scelto JSCH per SSH2 e Jacob per Java. Mi rendo conto che Jacob mi limita a Windows come ospite di partenza, ma è qualcosa con cui posso vivere.

Sto scrivendo un involucro intorno a Jacob per utilizzare alcuni dei meccanismi nativi per parlare con il bersaglio tramite WMI e sto correndo in un piccolo problema. Sto cercando di recuperare un elenco di tutte le proprietà disponibili per un dato oggetto Win32_ Class e non sono stato in grado di farlo.

Questo collegamento mostra che puoi farlo in VB http://www.vbsedit .com / script / misc / wmi / scr_1333.asp e mi stavo chiedendo se qualcuno fosse stato in grado di capirlo quando usi Jacob.

Modifica: (Snippet di codice)

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);
.

Il codice sopra mostra che posso chiedere singole proprietà ma non c'è un buon modo per chiedere tutte le proprietà.

È stato utile?

Soluzione

Ecco la risposta per la tua domanda.Lo spero, perché non so dove si trova esattamente il tuo problema.Penso ancora che quando ti chiedi di fornire la parte del codice invece di richiedere il rispondente di scrivere tutto.

Questa potrebbe essere anche una risposta a un problema più generale, che ho appena imparato:
Come enumerare tutti gli elementi in una collezione, implementare il costrutto For Each?
Si dovrebbe usare la classe 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;
    }
  }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top