源程序代码.doc_第1页
源程序代码.doc_第2页
源程序代码.doc_第3页
源程序代码.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

源程序代码:1.systemProcess.javapublic class systemProcessstatic /调用本地代码编写DLL(动态连接库),process为C/C+生成的DLL文件名 System.loadLibrary(process);/声明所需要的本地方法public static native int processHandle()throws Exception; / 获取进程快照表的快照信息public static native boolean processData(int snapshot,dataProcess ds)throws Exception;/用来获取其他进程2.dataProcess.javaclass dataProcessString fileName;int PProcessID;int currentThread;int classBase;/在java中设置从本地代码中返回的数据public void setName(String name) /设置返回的进程文件名 fileName=name;public String getName() return fileName;public void setPProcessID(int PID) /设置返回的进程PID PProcessID=PID;public int getPProcessID() return PProcessID; public void setThread(int thread) /设置返回的进程开启线程数 currentThread=thread; public int getThread() return currentThread; public void setClassBase(int base) /设置返回的进程优先级classBase=base; public int getClassBase() return classBase; 3.process.cpp#include #include systemProcess.h#include #include #include void throwException(JNIEnv *env,char *cls,char *desc) jclass c; (env)-ExceptionDescribe();(env)-ExceptionClear();/抛出一个异常c=(env)-FindClass(cls);if(c) (env)-ThrowNew(c,desc);JNIEXPORT jint JNICALL Java_systemProcess_processHandle (JNIEnv *env, jclass cls)HANDLE snapshot; /获得某一时刻系统进程、堆、模块或线程的快照信息 snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); return (jint)snapshot;JNIEXPORT jboolean JNICALL Java_systemProcess_processData (JNIEnv *env, jclass cls, jint snapshot,jobject dataProcess) PROCESSENTRY32 processListStr; jclass jcls; jmethodID jmid; jboolean return_value; processListStr.dwSize=sizeof(PROCESSENTRY32); /获的系统进程链表中下一个进程的信息 return_value=Process32Next(HANDLE)snapshot,&processListStr); if(!return_value) return false; /在本地代码中获取JAVA中对象所属的类 jcls=(env)-GetObjectClass(dataProcess); if(!jcls) /抛出一个异常 throwException(env,java/lang/Exception,unable find data class); return false; /在本地代码中获取JAVA类中的方法setName的标识号 jmid=(env)-GetMethodID(jcls,setName,(Ljava/lang/String;)V); if(!jmid) /抛出一个异常 throwException(env,java/lang/Exception,unable find dataProcess.setName); return false; /在本地代码中设定JAVA对象成员的变量 (env)-CallVoidMethod(dataProcess,jmid,(env)-NewStringUTF(processListStr.szExeFile); /在本地代码中获取JAVA类中的方法setPProcessID的标识号 jmid=(env)-GetMethodID(jcls,setPProcessID,(I)V); if(!jmid) /抛出一个异常 throwException(env,java/lang/Exception,unable find dataProcess.setPProcessID); return false; (env)-CallVoidMethod(dataProcess,jmid,processListStr.th32ParentProcessID); /在本地代码中获取JAVA类中的方法setThread的标识号 jmid=(env)-GetMethodID(jcls,setThread,(I)V); if(!jmid) throwException(env,java/lang/Exception,unable find dataProcess.setThread); return false; (env)-CallVoidMethod(dataProcess,jmid,processListStThreads); /在本地代码中获取JAVA类中的方法setClassBase的标识号 jmid=(env)-GetMethodID(jcls,setClassBase,(I)V); if(!jmid) throwException(env,java/lang/Exception,unable find dataProcess.setClassBase); return false; (env)-CallVoidMethod(dataProcess,jmid,processListStr.pcPriClassBase); return true;4.systemProcessTest.javapublic class systemProcessTest public static void main(String args) int snapshot=0; try snapshot=systemPcessHandle(); /获取系统进程快照信息的句柄 catch(Exception ex) while(true) boolean b=false; dataProcess ds=new dataProcess(); /对象实例化 try b=systemPcessData(snapshot,ds); catch(Exception e) if(!b) System.out.println(no Process show!); break; System.out.println(Process Name:+ds.getName(); /显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论