f_proc_terminate.srf 1008 B

123456789101112131415161718192021222324252627282930
  1. $PBExportHeader$f_proc_terminate.srf
  2. global type f_proc_terminate from function_object
  3. end type
  4. forward prototypes
  5. global function long f_proc_terminate (string arg_proc_name)
  6. end prototypes
  7. global function long f_proc_terminate (string arg_proc_name);// 输入进程名,还回结束进程数
  8. s_Process lst_Process //进程结构
  9. ulong ln_Snapshot, ln_handle
  10. long ll_TermCount = 0
  11. ln_Snapshot = CreateToolhelp32Snapshot(2,0) //在堆上创建进程快照
  12. If (ln_Snapshot < 1) THEN RETURN -1 //出错则返回
  13. lst_Process.StructSize = 296 //Win32api的Process结构大小
  14. IF Process32First(ln_Snapshot,lst_Process) = 0 THEN RETURN -1//取第一个进程失败则返回
  15. do while true
  16. if lst_Process.FileName = arg_proc_name then
  17. ln_handle = OpenProcess(1,false,lst_Process.ProcessID)// 1:PROCESS_TERMINATE
  18. if TerminateProcess(ln_handle,0) then
  19. ll_TermCount++
  20. end if
  21. end if
  22. IF Process32Next(ln_Snapshot,lst_Process) = 0 THEN EXIT //列举完毕
  23. loop
  24. return ll_TermCount
  25. end function