如何读取当前进程的映象名称?

jin_j_y 2005-10-05 09:22:12
1 如果读取当前应用程序的进程的映象名称?用Java代码怎么写?
2 如果得到某个映象名称的进程总数?如名为javaw.exe的进程有多少个的代码怎么写?
...全文
188 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcllcl987 2005-10-08
  • 打赏
  • 举报
回复
java本来是跨平台的,自身运行在java虚拟机中,访问本地系统资源最好不要用java来做,虽然也可以实现(jni).
我上个月也遇到了你相同的问题,不过是先用c++得到进程并处理逻辑的,只是用java调用了一下,
java调用其他程序类似这样:

Runtime.getRuntime().exec( "cmd /c start C:\\bea\\user_projects\\domains\\HBEP\\autoStart.cmd");



监控一个进程类似这样(c++builder)

try{
HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (SnapShot == INVALID_HANDLE_VALUE)
return;
PROCESSENTRY32 ProcessInfo;
ProcessInfo.dwSize=sizeof(ProcessInfo);
BOOL Status=Process32First(SnapShot,&ProcessInfo);
BOOL flag = false; //是否有foxmail.exe进程
while(Status)
{
if(AnsiString(ProcessInfo.szExeFile).LowerCase() == "foxmail.exe")
{
flag = true;
}
Status=Process32Next(SnapShot,&ProcessInfo);
}
AnsiString tempTime = FormatDateTime("yyyy,mm,dd,hh:nn:ss", Now());
if(!flag){
AnsiString Exename = "D:\\Program Files\\Foxmail\\Foxmail.exe";
ShellExecute(Handle,"open",Exename.c_str(),"","", SW_SHOW );
Memo1->Lines->Add("restart this program at " + tempTime);
}
else{
Memo1->Lines->Add("running at " + tempTime);
}
CloseHandle (SnapShot);
}catch(...){

}





详细的请看:
http://blog.csdn.net/lcllcl987/archive/2005/07/21/430797.aspx
kenny1979 2005-10-08
  • 打赏
  • 举报
回复
也可以的 用jni来调dll
jin_j_y 2005-10-06
  • 打赏
  • 举报
回复
谢谢kenny的回帖。但是我现在只需要在Windows下面实现这个功能。
我感觉自己对Windows底层的东西知道的太少了,我想问一个问题:
Java可不可以调用win32 API?如果可以怎么调用?
我看到VB和Delphi都可以调用的。
kenny1979 2005-10-05
  • 打赏
  • 举报
回复
进程通常是操作系统来管理的
可以在你的程序里 调用外部命令比如 unix下用ps -ef |grep java来查询当前系统的进程信息 重定向输出到你这个程序可以读到的地方。解析这个流取得某个进程的进程号后 再调用外部命令 比如 杀掉某个进程unix下用kill -9 xxx ,当然你要有足够的权限 等等来实现进程的管理。
除此之外 据我所知好像没有其它的方法了
jin_j_y 2005-10-05
  • 打赏
  • 举报
回复
是不是用java无法做到这2点?只能通过执行C#之类的程序来得到进程名称,名称个数的信息?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧