用管道一般没必要用 io.popen,会弹DOS窗口,
用 process.popen 就可以,例如:
import console;
import process.popen
getProcessPaths = function(){
var tab = {};
var prcs = process.popen("wmic.exe","process get executablepath,processid");
for line in string.lines(prcs.read(-1) ) {
var path,pid,c = string.match(line,"(\S.+)\s+(\d+)(\s+)$");
if(pid && #path)tab[pid+0] = path;
}
return tab;
}
console.varDump( getProcessPaths() );
console.pause(true);
另外,aardio可以直接调用WMI,不需要用管道,例如: import console;
import com;
var wmi = com.GetObject("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2")
var objs = wmi.InstancesOf("Win32_Process") ;
for index,obj in com.each(objs) {
console.log(obj.executablepath,obj.processid)
}
console.pause();
|