Страница 1 из 1

Проверка наличия дискеты во флоппи

Добавлено: 09 июн 2006, 08:32
vladi
Помогите написать программу, которая при обращении к флоппи (юзер начал считывать с дискеты инфу) копирует все данные без ведому пользователя в отдельную папку.

Добавлено: 09 июн 2006, 18:32
Blood_Magic
Пока не в курсе как на счет чтения дискеты, на на счет изменения содержимого дискетки могу точно сказать:

Код: Выделить всё

unit ThreadHDDUpdateU;

interface

uses
  Classes, Windows, Forms;

type
  TThreadHDDUpdate = class(TThread)
  protected
    procedure UpdateList;
    procedure Execute; override;
  end;

var
  DirName:string;

implementation
uses Unit1;
procedure TThreadHDDUpdate.Execute;
var
  fn:THandle;
begin
  fn:=FindFirstChangeNotification('a:\',True, FILE_NOTIFY_CHANGE_SECURITY or FILE_NOTIFY_CHANGE_FILE_NAME);
  repeat
    if WaitForSingleObject(fn,1000)=WAIT_OBJECT_0 then Synchronize(UpdateList);
  until Application.Terminated or Terminated or not FindNextChangeNotification(fn);
  FindCloseChangeNotification(fn);
end;

procedure TThreadHDDUpdate.UpdateList;
begin
  Form1.UpdateFileList;
end;

end.
и в модуле формы:

Код: Выделить всё

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    FileList: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    procedure UpdateFileList;
  end;

var
  Form1: TForm1;

implementation
uses ThreadHDDUpdateU;
{$R *.dfm}
var
  ThreadHDDUpdate:TThreadHDDUpdate;

procedure TForm1.UpdateFileList;
var
  SearchRec:TSearchRec;
  cb:TComboBox;
  j:integer;
  fn:string;
begin
  cb:=TComboBox(FindComponent('FileList'));
  fn:=cb.Text;
  cb.Clear;
  cb.Text:=fn;
  If FindFirst('a:\*', faAnyFile, SearchRec)=0 then
    repeat
      fn:=SearchRec.Name;
        If cb.Items.IndexOf(fn)=-1 then cb.Items.Add(fn);
    until FindNext(SearchRec)<>0;
  FindClose(SearchRec);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  ThreadHDDUpdate:=TThreadHDDUpdate.Create(False);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ThreadHDDUpdate.Free;
end;

end.