Come utilizzare JSL per contare i processi attivi in esecuzione in Windows, ad esempio il numero di notepad.exe?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho un problema nel contare i processi attivi nella memoria di Windows.
Non ho familiarità con Windows API. Qualcuno potrebbe aiutare su questo utilizzando la funzione DLL per contare il numero di processo in esecuzione per un determinato nome del processo?
Se apri 3 notepad.exe, il task manager della finestra ha tre sessioni di blocco note in esecuzione.
Ho bisogno di una funzione JSL che assuma il nome del processo come input e il numero del processo come ritorno.
Grazie mille!
Ri: Come utilizzare JSL per contare i processi attivi in esecuzione in Windows, ad esempio il numero di notepad.exe?Craige,
Ho provato la funzione runprogram in JMP 11 e poi ho scritto una funzione count count. Posso ottenere la soluzione che voglio. Grazie molto!
Un'altra cosa interessante perché lo faccio è che ho notato che open () ha cambiato la funzione del file di testo dall'aggiornamento di JMP 9 a 11.
Io uso JMP 9 per attivare un file .exe per fare una query del database di threading mutilple, dopodiché è stata completata la sessione .exe, arrotolando i dati.
In JMP9 quando apro il file di dati ha sempre successo, tuttavia, in JMP11 molte volte dà un file di dati incompleto di avvertimento letto e perso metà. La dimensione del file di dati è in genere> 2M-3M, non troppo grande. Non sono sicuro di cosa sia realmente cambiato in JMP11. Altrimenti, non ho bisogno di preoccuparmi di trovare una soluzione come questa.
Ancora grazie per la soluzione.
Ri: Come utilizzare JSL per contare i processi attivi in esecuzione in Windows, ad esempio il numero di notepad.exe?RunProgram è apparso per la prima volta in JMP 11. Non utilizza un file su disco per la comunicazione tra JMP e il programma esterno; usa lo stdin e lo stdout. A seconda delle esigenze dell'applicazione, è possibile eseguire il programma notepad.exe da runProgram anziché utilizzare RunProgram per eseguire un altro programma per capire se il file notepad.exe ha terminato. (È possibile evitare completamente il polling.)
Con JMP 9 hai ancora diversi modi per farlo funzionare. Potresti voler indagare automazione usare un altro linguaggio, come forse il visual basic, per controllare JMP e notepad.exe. Potresti voler scrivere un file .BAT e usare JMP's open () per eseguire il file bat. Ciò richiede un ciclo di polling per determinare quando il file bat è finito. È possibile utilizzare la funzione di attesa (secondi) di JMP per consentire il JMP di sospensione tra i sondaggi. Infine, come suggerisce la domanda originale, è possibile utilizzare l'interfaccia DLL di JMP per accedere a una DLL di sistema. Questo post suggerisce che l'interfaccia DLL migliore apparisse in JMP 10; potrebbe non essere possibile effettuare le chiamate DLL richieste con l'interfaccia precedente. Non so che API / DLL avresti bisogno.
Ri: Come utilizzare JSL per contare i processi attivi in esecuzione in Windows, ad esempio il numero di notepad.exe?Craige,
grazie per la tua risposta. Ho altre due domande:
1. sembra che il programma di esecuzione non sia una funzione in JMP9 poiché sto ancora utilizzando JMP9.
2. La tua soluzione scrive un file su harddisk? Sto provando a fare sessioni parallele e ad usare l'attesa nel ciclo infinito. Quando il conteggio totale del processo è zero, quindi interrompere il ciclo e procedere con il resto del codice JSL. Se scrivi sul disco rigido, è meno preferibile rispetto all'utilizzo della DLL per ottenere le informazioni direttamente dalla memoria.
Grazie!
Ri: Come utilizzare JSL per contare i processi attivi in esecuzione in Windows, ad esempio il numero di notepad.exe?Iniziato qui Come si elencano tutti i processi sulla riga di comando in Windows? - Super utente
e ha scritto questo
x=runprogram(executable("wmic"),options({"process list"}),
readfunction(function({this},write(this<
);
probabilmente vorrai analizzare il testo da questo << read piuttosto che scaricarlo nel log via write (). Un sacco di testo che non vuoi, probabilmente, e cose come "C: \ Programmi (x86) \ Microsoft Office \ Office15 \ OUTLOOK.EXE"