
package test;
import javaioBufferedReader;
import javaioFile;
import javaioFileWriter;
import javaioIOException;
import javaioInputStream;
import javaioInputStreamReader;
import javaioPrintWriter;
public class GetPid {
private static final String PNAME = "QQ";
public static void main(String[] args)
throws IOException {
Systemoutprintln("包含关键字 "+PNAME+" 的进程有:");
Systemoutprintln();
String path = SystemgetProperty("userdir");
final File createFileName = new File(path + "\\mytempscriptvbe");
if(createFileNameexists()createFileNamedelete():createFileNamecreateNewFile()){}
final PrintWriter pw = new PrintWriter(new FileWriter(createFileName,
true), true);
pwprintln("for each ps in getobject(\"winmgmts:\\\\\\root\\cimv2:win32_process\")instances_");
pwprintln("wscriptecho pshandle&vbtab&psname");
pwprintln("next");
pwclose();
final InputStream ii = RuntimegetRuntime()exec(
"cscript " + path + "\\mytempscriptvbe")getInputStream();
final InputStreamReader ir = new InputStreamReader(ii);
final BufferedReader br = new BufferedReader(ir);
String str = null;
String[] ss = null;
while ((str = brreadLine()) != null) {
if (strindexOf(PNAME)>0&&strendsWith("exe")) {
ss = strsplit("\\s");
for(int i=0;i<sslength;i+=2){
Systemoutprintln("");
Systemoutprintln("进程名:"+ss[i+1]+"\n进程ID:"+ss[i]);
}
}
}
Systemoutprintln("");
irclose();
iiclose();
brclose();
}
}
运行结果如下
包含关键字 QQ 的进程有:
进程名:QQexe
进程ID:3956
GetWindowThreadProcessId,它根据窗口的句柄来获取进程和线程ID,VB原型如下
'Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
'参数:
'hwnd:目标窗口的句柄
'lpdwProcessId:一个接受返回进程ID的Long变量,
'顺便提一下,在我们调用API的时候,如果一个变量不是ByVal传递,则表示这个变量是用来接受返回值的(但也不是绝对的)
'返回值:
'窗口的线程ID
找到所有进程(枚举进程),然后对比进程名找到进程ID。
不太可能有直接的办法去查找id,因为系统里可能有多个同名的进程。
参考:>
以上就是关于java 获取指定的进程id全部的内容,包括:java 获取指定的进程id、已知线程句柄,如何得到Id、vc++如何根据进程名获取进程id等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)