Einzelnen Beitrag anzeigen

Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Zugriffsverletzung beim Ermitteln von Prozessen

  Alt 10. Mär 2011, 14:26
vielen dank für eure antworten...
hab das folgende angepasst:
- String bei 1 beginnen --> For i := 1 To Length(sPathProgram) Do - Rückgabe Wert von Modul32First prüfen --> If Module32First(hModuleSnap, ModuleEntry) = True Then hier nochmals die komplette funktion:
Delphi-Quellcode:
function fnGetNoOfSameProgramProcesses(sProgramName : String) : Integer;

var
i, j, k : Integer;
sPathProgram : String;
hModuleSnap, hProcessSnap : THandle;
ProcessEntry : TProcessEntry32;
ModuleEntry : TModuleEntry32;

begin

  i := 0;
  j := 0;
  k := 0;

  //Get Process IDs
  hProcessSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);

  If hProcessSnap <> INVALID_HANDLE_VALUE Then
  Begin
    ProcessEntry.dwSize := SizeOf(ProcessEntry32);
    If Process32First(hProcessSnap, ProcessEntry) Then
    Begin
      While Process32Next(hProcessSnap, ProcessEntry) Do
      Begin

        //Get .exe Names for Process IDs and Count the same Programs
        hModuleSnap := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, ProcessEntry.th32ProcessID);
        If hModuleSnap <> INVALID_HANDLE_VALUE Then
        Begin
          ModuleEntry.dwSize := SizeOf(ModuleEntry32);

          If Module32First(hModuleSnap, ModuleEntry) = True Then
          Begin
            sPathProgram := (ModuleEntry.szExePath);
            For i := 1 To Length(sPathProgram) Do
            Begin
              If sPathProgram[i] = '\Then j := i;
            End;
            If UpperCase(Copy(sPathProgram, j + 1, Length(sPathProgram))) = UpperCase(sProgramName) Then k := k + 1;
          End;

          CloseHandle(hModuleSnap);
        End;

      End;
    End;
    CloseHandle(hProcessSnap);
  End;

  Result := k;

end;
mein programm läuft gerade auf einem testrechner und bis jetzt kam die zugriffsverletzung nicht mehr =)
vielen dank nochmal für eure hilfe!!!
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat