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;
    
  • 相关阅读:
    【原】文本图片自适应高度小bug以及解决办法
    【原】iOS学习39网络之数据请求
    【原】iOS学习38网络之数据解析
    iOS数据持久化文件读写之偏好设置
    SQLite错误码
    iOS开发代码规范(通用)
    iOS学习37数据处理之CoreData
    iOS中的单例
    iOS学习36数据处理之SQLite数据库
    UIImage两种初始化的区别
  • 原文地址:https://www.cnblogs.com/Jekhn/p/2140331.html
Copyright © 2011-2022 走看看