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;
    
  • 相关阅读:
    【Silverlight】汉诺塔游戏,带AI
    Farseer Physics Engine
    解决SilverLight的图片裁剪问题
    【C#】三维立体验证码 (3DCaptcha)
    又一个“众所周知”的DAL层设计BUG
    【C#】性别类
    36进制条码序列号生成器 [更新]
    理想的软件设计标准
    表驱动法概念到实战(一) 原理及基本运用
    Sudoku solver
  • 原文地址:https://www.cnblogs.com/Jekhn/p/2140331.html
Copyright © 2011-2022 走看看