[Java] Klasse om NT services mee in de gate te houden

Pagina: 1
Acties:

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik vroeg me af of er een klasse bestaat waarmee ik NT services kan bevragen. Hiermee bedoel ik eigenlijk alleen maar of ik de status van een service kan opvragen. Ik wil namelijk kunnen controleren of een service gestart en/of gestopt is.

Mocht dit niet kunnen met Java is het dan wel mogelijk om de output van een CLI programma af te vangen? Ik heb namelijk al wel een CLI based tooltje waarmee de status op kan vragen!

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik heb zelf vrij recentelijk een Java applicatie geschreven die contact kon opnemen met COM+ objecten. Via die weg (als er geen andere, kortere is) kun je denk ik ook een com object schrijven dat de status van die service opvraagt en die vervolgens benaderen met Java objecten. Of misschien is er wel een standaard COM object dat je hiervoor kunt gebruiken.

De manier waarop ik het gedaan heb is via JaCOB, ofwel de Java Com bridge, een project van danadler: http://danadler.com/jacob/index.html

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Met JNI zou dat toch moeten kunnen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
:?
Ehhh, ik ben pas recentelijk weer met Java aan de slag gegaan (en is ook de enige taal die ik naast PHP enigzins beheers). Ik kan helemaal geen COM componenten maken en ik heb nog nooit van JNI gehoord...

Kunnen jullie me iets concretere richtingen bieden?

[ Voor 12% gewijzigd door Deddiekoel op 06-09-2004 16:19 ]

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

google is je vriend

[ Voor 19% gewijzigd door Alarmnummer op 06-09-2004 16:21 ]


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
I know, ik vind ook wel het een en ander over JNI maar ik heb nog steeds het idee dat ik een speld in een hooiberg aan het zoeken ben!

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Je wilt dan ook heel specifieke functionaliteit, dat komt er dan ook vaak bij kijken. Java is in principe platformonafhankelijk opgezet en niet ieder platform werkt met services (of op een andere manier).
Maar als je nu eens probeert uit te vogelen of er een commandprompt commando bestaat om informatie over services op te vragen, dan kun je met Runtime.exec in elk geval een eindje komen.

Kijk voor meer informatie over Runtime.exec onder andere op http://jguru.com/faq/JNI (6e entry in de search van alarmnummer), daar staat een voorbeeldje bij hoe je hem kan gebruiken.

En in de javadoc natuurlijk.

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
bigbeng schreef op 06 september 2004 @ 17:21:
Je wilt dan ook heel specifieke functionaliteit, dat komt er dan ook vaak bij kijken. Java is in principe platformonafhankelijk opgezet en niet ieder platform werkt met services (of op een andere manier).
Maar als je nu eens probeert uit te vogelen of er een commandprompt commando bestaat om informatie over services op te vragen, dan kun je met Runtime.exec in elk geval een eindje komen.

Kijk voor meer informatie over Runtime.exec onder andere op http://jguru.com/faq/JNI (6e entry in de search van alarmnummer), daar staat een voorbeeldje bij hoe je hem kan gebruiken.

En in de javadoc natuurlijk.
Ik heb iets dat via de commandprompt werkt en ook runtime.exec() kennik. Ik zal eens gaan kijken hoe ik de uitvoer in Java kan krijgen.

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23:25

Janoz

Moderator Devschuur®

!litemod

Mwah, lijkt me een simpel gevalletje API lezen. Als eerste kom je uit bij de exec methoden in Runtime om je commando uit te voeren. Deze levert een Process object op waarvan je vervolgens weer de std output en err op kunt vragen. Om alvast je volgende vraag te beantwoorden: Gebruik waitFor zodat je java programma wacht tot het cli tootltje klaar is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Janoz schreef op 07 september 2004 @ 10:32:
Mwah, lijkt me een simpel gevalletje API lezen. Als eerste kom je uit bij de exec methoden in Runtime om je commando uit te voeren. Deze levert een Process object op waarvan je vervolgens weer de std output en err op kunt vragen. Om alvast je volgende vraag te beantwoorden: Gebruik waitFor zodat je java programma wacht tot het cli tootltje klaar is.
Zover ben ik inmiddels dus ook al gekomen. Ik heb de exec() aangeroepen en heb dus ook al een Process object. Het lukt me echter niet af te vangen wat dit process aan output genereerd.

Ik gebruik de "getInputStream()" methode en die levert mij een InputStream op. Maar hier zit ik vast. Ik weet niet hoe ik van een input stream naar een leesbaar stukje text kom. Ik gebruik momenteel om te testen "ipconfig" als commando voor Runtime.exec() methode.

[ Voor 4% gewijzigd door Deddiekoel op 07-09-2004 11:09 ]

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23:25

Janoz

Moderator Devschuur®

!litemod

Euhm, je wilt de output hebben van het cli tooltje toch? ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Janoz schreef op 07 september 2004 @ 11:10:
Euhm, je wilt de output hebben van het cli tooltje toch? ;)
Nu moet je me niet in de war brengen!

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Hebbes:
code:
1
2
3
4
5
6
7
8
        InputStream in = executedProcess.getInputStream();

        while (true) {
        int i = in.read();
        if (i == -1) break;
            char c = (char) i; 
            System.out.print(c);    
        }

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik snap een ding alleen nog niet. Ik gebruikte eerst de read() methode die naar een char array schreef. Op zich werkte dit wel denk ik maar als ik op die char array een toString() uitvoerde dan kreeg ik geen goede tekst. Ligt dit aan de toString functie of deed ik iets anders verkeerd.

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Als je een InputStreamReader maakt (constructor heeft een InputStream als input) en daarmee vervolgens een BufferedReader maakt (constructor heeft een Reader object als input en InputStreamReader extends Reader, dus dat kan), dan kun je met readLine() regel voor regel de input lezen. Als de String die wordt teruggegeven null is, dan is het einde van de stream bereikt.

Ik raad je in elk geval aan om je in Streams in te lezen, er zijn veel handige truuks die je kunt toepassen als je hier wat meer kennis van hebt.

edit:
En als antwoord op je vraag, een character array heeft geen toString methode omdat het een primitieve variabele is (zoals int en long enzo). Vergeet dat ik dit zei, de toString bestaat wel, maar heeft een iets andere werking dan je zou verwachten. Je kunt echter wel een String maken dmv een char array. Zoek dit maar even op in de documentatie van Java, kijk bij de constructors.

[ Voor 29% gewijzigd door bigbeng op 08-09-2004 12:35 ]

Pagina: 1