寻找一种方式,通过使用JNA来获取所有当前运行的Windows程序及其命令行的列表。这个网站上有几个教程(Get list of processes on Windows in a charset-safe way),它们显示了如何获得正在运行的程序名称列表,但我正在寻找完整的命令行。我见过帖子提到使用Module32First功能来做到这一点,但我似乎无法找到任何有关如何通过JNA使用它的文档。有任何想法吗?JNA:获取所有窗口进程命令行
编辑:
我目前试过下面从上述职务。我们的想法是,我们需要一个在窗口上遍历所有当前正在运行的进程并获取其命令行的进程内方式。我们不想使用wmic。
Kernel32 kernel32 = (Kernel32) Native.loadLibrary(Kernel32.class, W32APIOptions.UNICODE_OPTIONS);
Tlhelp32.PROCESSENTRY32.ByReference processEntry = new Tlhelp32.PROCESSENTRY32.ByReference();
WinNT.HANDLE snapshot = kernel32.CreateToolhelp32Snapshot(Tlhelp32.TH32CS_SNAPPROCESS, new WinDef.DWORD(0));
try {
while (kernel32.Process32Next(snapshot, processEntry)) {
System.out.println(processEntry.th32ProcessID + "\t" + Native.toString(processEntry.szExeFile));
}
}
finally {
kernel32.CloseHandle(snapshot);
}
EDIT2:
看的Windows API(http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839(v=vs.85).aspx)它说的下方。我试图通过JNA获得可执行文件的完整路径。我想这是Module32First函数,JNA不支持MODULE32ENTRY结构。
szExeFile 进程的可执行文件的名称。要检索可执行文件的完整路径,请调用Module32First函数并检查返回的MODULEENTRY32结构的szExePath成员。但是,如果调用进程是32位进程,则必须调用QueryFullProcessImageName函数以检索64位进程的可执行文件的完整路径。
我做了在后编辑上面更清楚地解释什么,我已经试过,我试图做的。 – 2013-05-05 14:43:32