Einzelnen Beitrag anzeigen

daPimP

Registriert seit: 26. Okt 2006
25 Beiträge
 
#24

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 21. Mai 2007, 08:47
@Olli: Genau das hab ich gesucht.

Es fehlt nur noch die endgültige Umsetzung.
1) Wenn der erste Teil bis //-------------- richtig ist
2) Wie kann ich alle Werte korrekt anzeigen, irgendwie steh ich auf dem Schlauch

Delphi-Quellcode:
implementation

uses JwaNative;
...

function SHOWHANDLE(const lv: TListView): BOOL;
const
  BUF_SIZE = $15000;
var
  HANDLEListBuffer: PChar;
  HANDLEInfo: jwanative.PSYSTEM_HANDLE_INFORMATION;

  BufSize: Cardinal;
  Status: Integer;
   i: integer;
  li: TListItem;
begin
  Result := false;
  lv.Items.BeginUpdate;
  lv.Items.Clear;

// capture Liste
  BufSize := BUF_SIZE;
  repeat
    GetMem(HANDLEListBuffer, BufSize);
    if HANDLEListBuffer = nil then
    begin
      lv.Items.EndUpdate;
      Exit;
    end;

    Status := jwanative.NtQuerySystemInformation(SystemHandleInformation ,
                                       HANDLEListBuffer,
                                       BufSize,
                                       nil);

    if Status <> NO_ERROR then
    begin
      // Buffer zu klein, vergrößern
      FreeMem(HANDLEListBuffer);
      Inc(BufSize, BUF_SIZE);
    end
    else if Status < 0 then // irgendein Fehler...
    begin
      lv.Items.EndUpdate;
      Exit;
    end;
  until Status >= 0;

  // AB HIER STECK ICH FEST ---------------------------------------
 for i:= 1 to 6 do begin //zur probe nur mal die ersten 6 Werte...
   HANDLEInfo := PSYSTEM_HANDLE_INFORMATION(HANDLEListBuffer);
   HANDLEInfo := PSYSTEM_HANDLE_INFORMATION(Cardinal(HANDLEInfo));
  
          li := lv.Items.Add;
   li.Caption:= HANDLEInfo^.ProcessId;
   li.SubItems.Add(IntToStr(HANDLEInfo^.Handle));
 end;

  Result := true;
  FreeMem(HANDLEListBuffer);
  lv.Items.EndUpdate;
end;
watch out ... SySSnapper... coming soon
  Mit Zitat antworten Zitat