zoukankan      html  css  js  c++  java
  • 枚举进程for in

    //use Tlhelp32
    
    function GetProcessIDEx(List:TStrings; ProcessName: string = ''): TProcessEntry32;
    var
      ret: Boolean;
      processID: Cardinal;
      _processName: string;
      FSnapshotHandle: HWND;
      FProcessEntry32: TProcessEntry32;
    begin
      FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
      ret := Process32First(FSnapshotHandle,FProcessEntry32);
      while ret do
      begin
        _processName := ExtractFileName(FProcessEntry32.szExeFile);
        if (ProcessName = '') then
        begin
          processID := FProcessEntry32.th32ProcessID;
          List.Add(Format('%-20s%d',[_processName,processID]));
        end
        else if (AnsiCompareText(_processName,ProcessName)=0) then
        begin
          processID := FProcessEntry32.th32ProcessID;
          List.Add(Format('%-20s%d',[_processName,processID]));
          Result := FProcessEntry32;
          Break;
        end;
        ret := Process32Next(FSnapshotHandle,FProcessEntry32);
      end;
    end;
    
    function GetProcessID(const ProcessName: string): Integer;
    var
      ret: Boolean;
      processID: Cardinal;
      _processName: string;
      FSnapshotHandle: HWND;
      FProcessEntry32: TProcessEntry32;
    begin
      Result := -1;
      FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
      ret := Process32First(FSnapshotHandle,FProcessEntry32);
      while ret do
      begin
        _processName := ExtractFileName(FProcessEntry32.szExeFile);
        if (AnsiCompareText(_processName,ProcessName)=0) then
        begin
          processID := FProcessEntry32.th32ProcessID;
          Result := processID;
          Break;
        end;
        ret := Process32Next(FSnapshotHandle,FProcessEntry32);
      end;
    end;
    
    function IsDestProcess: Integer;
    type
      TExeNameEnum = (exeNotepad=1,exeTest=2,exeBds=3);
    const
      K_ExeName: array [TExeNameEnum] of string = (
      ('Notepad1.exe'),('Test.exe'),('bds.exe')
      );
    var
      ExeName: TExeNameEnum;
      //ExeName: exeNotepad..exeBds;
    begin
      Result := -1;
      //for in 高版本才可以用如D2007
      for ExeName in [Low(TExeNameEnum)..High(TExeNameEnum)] do
      //for ExeName in [exeNotepad..exeBds] do
      begin
        ShowMessage(K_ExeName[ExeName]);
        Result := GetProcessID(K_ExeName[ExeName]);
        if Result > 0 then Break;
      end;
    end;
    
  • 相关阅读:
    各组评价
    团队冲刺第十天
    团队冲刺第九天
    团队冲刺第八天
    团队冲刺第七天
    人力资源绩效管理系统工作流程
    初次安装Android studio问题
    后台无法登陆——11.10
    html学习之radio标签——小白
    安装一些软件时可能出现的问题【internal error 2503】
  • 原文地址:https://www.cnblogs.com/Jekhn/p/2140331.html
Copyright © 2011-2022 走看看