[bcb]Jak sprawdzić czy plik jest używany

0

Witam,
chciałbym się dowiedzieć jak pod C++ Builderem 6 na windzie sprawdzić czy plik jest używany. Zależy mi na tym, żeby to było ludzkie, a nie sprawdzało czy da się usunąć plik albo zmienić jego nazwę i żeby nie wyświetlało, że plik jest używany kiedy ma atrubut 'tylko do odczytu'. Znalazłem coś takiego w Delphi:

function sprawdz_plik(s:string):boolean;
var plik:tfilestream;
    b:boolean;
begin
  b:=false;
  try
  plik:=tfilestream.create(s,fmopenwrite);
  plik.free;
  except
    b:=true;
  end;
   if b then sprawdz_plik:=true else
   sprawdz_plik:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if sprawdz_plik('c:\1.exe') then
    showmessage('jest używany')
  else
   showmessage('nie jest używany')
end;

...ale Delphi nie znam i nie potrafię tego "przetłumaczyć" na C++ :/ Jak ktoś potrafi to przerobić albo wie jak to zrobić w C++ to proszę o pomoc.

0

____plik:=tfilestream.create(s,fmopenwrite);
próba otworzenia pliku z prawem do pisania
nie koniecznie może działać, bo ?właściciel? mógł takie prawo dać
Poszukaj o drugim parametrze "fopen"

0

Otwieranie pliku do zapisu nic tu nie pomoże.
Każdy plik można otworzyć bez blokowania,
i jest on wtedy całkowicie dostępny dla innych programów.

Ten kod sprawdza tylko, czy plik jest zablokowany przed zapisem... albo czy w ogóle istnieje.

Informacje o otwartych plikach można uzyskać wyłącznie bezpośrednio od systemu operacyjnego - on musi to wiedzieć, ale czy powie? :-D

0

No dobrze, wobec tego zostawmy ten kod, może niepotrzebnie go tu dałem, ale czy ktoś potrafi "wycisnąć" te informacje z systemu operacyjnego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1