返回列表 发帖

[原创]发一段老早写的列举,结束进程的程序代码,perl写的.

[watermark]发一段老早写的列举,结束进程的程序代码,perl写的.
  1. #!perl -w
  2. use Win32::Process;
  3. use Win32::ToolHelp;
  4. print " 进程管理工具
  5. By Xtiger www.Xtiger.net\n-------------------------\n";
  6. while(print qq/1、列举进程;\n2、结束进程;\n3、查询进程的绝对路径和加载的模块。\n想做什么:/)
  7. {
  8. &#36;want=<stdin>;
  9. chomp(&#36;want);
  10. print "--------------\n";
  11. if(&#36;want eq ';1';){getlist() and next;}
  12. if(&#36;want eq ';2';){killpid() and next;}
  13. if(&#36;want eq ';3';){modpid() and next;}
  14. if(&#36;want<1 or &#36;want>3){print "选择错误!\n";}
  15. }
  16. sub getlist
  17. {
  18. print "PID","\t","线程数","\t","名称","\n";
  19. my @ps = Win32::ToolHelp::GetProcesses();
  20. foreach my &#36;p (@ps)
  21. { print &#36;&#36;p[1],"\t",&#36;&#36;p[4],"\t",&#36;&#36;p[8], "\n"; }
  22. print "--------------\n";
  23. }
  24. sub killpid
  25. {
  26. print "请输入需要结束的进程的PID:";
  27. &#36;kpid=<stdin>;
  28. chomp(&#36;kpid);
  29. if(&#36;kpid eq "" or not &#36;kpid=~/[\d.]/g)
  30. {
  31. print "没有正确输入PID\n";
  32. goto nokill;
  33. }
  34. my &#36;kill=Win32::Process::KillProcess(&#36;kpid,1);
  35. if(&#36;kill==1)
  36. {
  37. print "\n成功结束进程!\n";
  38. }
  39. else
  40. {
  41. print "\n结束进程失败!\n";
  42. }
  43. nokill:
  44. print "--------------\n";
  45. }
  46. sub modpid
  47. {
  48. print "请输入需要查询的进程的PID:";
  49. &#36;mpid=<stdin>;
  50. chomp(&#36;mpid);
  51. if(&#36;mpid eq "" or not &#36;mpid=~/[\d.]/g)
  52. {
  53. print "没有正确输入PID\n";
  54. goto nomod;
  55. }
  56. my @ms = Win32::ToolHelp::GetProcessModules(&#36;mpid);
  57. foreach my &#36;m (@ms)
  58. { print &#36;&#36;m[7],"\t",&#36;&#36;m[8],"\n"; }
  59. nomod:
  60. print "--------------\n";
  61. }
复制代码
[/watermark]

[原创]发一段老早写的列举,结束进程的程序代码,perl写的.

学习学习!

TOP

学习...

TOP

返回列表 回复 发帖