Win7/Win10下的进程操作
来源:互联网 发布:fifaonline3古利特数据 编辑:程序博客网 时间:2024/05/16 10:56
一、Win7下如何获取进程的全路径名?
1、程序必须包含配置UAC2、用以下函数代码取路径uses TLHelp32,psapi;function FindProcess(AFileName: string;var ID:Cardinal): boolean;var hSnapshot: THandle;//用于获得进程列表 lppe: TProcessEntry32;//用于查找进程 Found: Boolean;//用于判断进程遍历是否完成begin Result :=False; hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统进程列表 lppe.dwSize := SizeOf(TProcessEntry32);//在调用Process32First API之前,需要初始化lppe记录的大小 Found := Process32First(hSnapshot, lppe);//将进程列表的第一个进程信息读入ppe记录中 while Found do begin if ((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName)) or (UpperCase(lppe.szExeFile )=UpperCase(AFileName))) then begin ID:=lppe.th32ProcessID; Result :=True; end; Found := Process32Next(hSnapshot,lppe);//将进程列表的下一个进程信息读入lppe记录中 end;end; function GetProcessPath(ProcessID: DWORD): string;var Hand: THandle; ModName: Array[0..Max_Path-1] of Char; hMod: HModule; n: DWORD;begin Result:=''; Hand:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,ProcessID); if Hand>0 then try ENumProcessModules(Hand,@hMod,Sizeof(hMod),n); if GetModuleFileNameEx(Hand,hMod,ModName,Sizeof(ModName))>0 then Result:=ExtractFilePath(ModName); except end;end;procedure TForm1.Button1Click(Sender: TObject);var Test:Dword; Path:string;begin FindProcess('Test.exe',Test); Path:= GetProcessPath(Test); ShowMessage(Path);end;
二、参考代码2
function TfUpdate.FindProcess(AFileName: string): boolean;var hSnapshot: THandle;//用于获得进程列表 lppe: TProcessEntry32;//用于查找进程 Found: Boolean;//用于判断进程遍历是否完成 KillHandle: THandle;//用于杀死进程begin Result :=False; hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统进程列表 lppe.dwSize := SizeOf(TProcessEntry32);//在调用Process32First API之前,需要初始化lppe记录的大小 Found := Process32First(hSnapshot, lppe);//将进程列表的第一个进程信息读入ppe记录中 while Found do begin if ((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName)) or (UpperCase(lppe.szExeFile )=UpperCase(AFileName))) then begin {if MsShow('发现打开Excel,是否将其关闭?',2)=6 then begin //由于我的操作系统是xp,所以在调用TerminateProcess API之前 //我必须先获得关闭进程的权限,如果操作系统是NT以下可以直接中止进程 KillHandle := OpenProcess(PROCESS_TERMINATE, False, lppe.th32ProcessID); TerminateProcess(KillHandle, 0);//强制关闭进程 CloseHandle(KillHandle); end;} Result :=True; end; Found := Process32Next(hSnapshot, lppe);//将进程列表的下一个进程信息读入lppe记录中 end;end;procedure TfUpdate.EndProcess(AFileName: string);const PROCESS_TERMINATE = $0001;var ContinueLoop: BOOL; FSnapShotHandle: THandle; FProcessEntry32: TProcessEntry32;begin FSnapShotHandle := CreateToolhelp32SnapShot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=UpperCase(AFileName)) or (UpperCase(FProcessEntry32.szExeFile )=UpperCase(AFileName))) then TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),FProcessEntry32.th32ProcessID), 0); ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end;end;备注: TProcessEntry32 需要引用单元 uses TLHelp32
0 0
- Win7/Win10下的进程操作
- win10、win7下关掉某个端口的进程
- win7 win10下80端口被System进程占用的解决方法
- win7、win10进程pid4占用80端口的解决办法
- win7、win10环境下的maven的环境变量配置
- win7下直接安装win10
- win7下直接安装win10
- win10下如何装win7
- Win7、Win10下Tensorboard可视化
- win7和win10下安装caffe和tensorflow的过程
- win10和win7下Java开发环境的配置
- win10换win7系统步骤操作详解
- [python3]win7/win10下安装scrapy
- Win7/Win10下配置adb环境变量
- win7/win10下安装Microsoft Loopback Adapter
- win7下的cmd基本操作
- Win10命令行下对MySQL的一些基本操作
- win10下安装opencv及tensorflow的操作步骤
- 调用一个UITableview的一个代理的方法,实现UITableview重载
- 机器学习--岭回归与偏最小二乘
- Android摄像头 怎么搞?
- 数据库读写分离的性能分析
- 利用mmSeg4j分词实现网页文本倾向性分析
- Win7/Win10下的进程操作
- JS 跳转到指定链接
- linux下QT初试
- Assembly x64 Intro - SSE2 4x4D Transpose
- Title_消息加解密(java版)
- OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
- 属性动画Animator学习
- Ming Rpc
- 性能评估