Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

может кто подскажет как решить проблему


Exile ©   (2006-06-20 11:48:00) 

Привет всем, вот пишу програмку смысл которой в следующем: работает в фоновом режиме, и постоянно проверяет подключены ли флешки к компу, если подключены проверяет их содержимое на наличие определенных файлов, если файлы найдены то блокирует комп и вежливо просит ввести код доступа к этой флеше, вот часть кода, внем есть косяки вроде таких как:
1. не знаю как работать с флешками, а именно как определить подключена флешка или нет.
2. в коде используется убивание процесса "Explorer" что в принципе не правильно, но в голову больша не че не приходить как еще можно отрубить   "зверю" доступ пока не введет код, есть мысль еще переватывать прерывания клавы чтобы не могли воспользоваться горячими клавишами, а окно проги сделать по верх всех окон, но если честно сказать пока что дальше "мысли" не уходил :).
3. сам  "Explorer" убиватеся не с помощь Delphi а с помощью VBS так как не знаю как это можно сделать в Delphi, хотя код в инете нашел но понянял его (не хотелось использовать то чего не знаешь).
4. если вы дочитали до сюда то плиз посмотрите листинг, может подскажите как решить перечисленные проблеммы особенно 1-ю, ну и если можно как небудь оптимизировать код буду очень благодарен.

тока критикуйте не онень сильно, всетаки я только учусь и многого не знаю..
p.s. Explorer взят только для пимера, дальше буду думать как по другому эт сделать.

implementation

{$R *.dfm}
var
i,n:integer;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
button1.SetFocus;
end;

procedure TForm1.FormActivate(Sender: TObject);
var
f: TextFile; // файл
fName: String[80]; // имя файла
begin
button2.enabled:=false;
Memo1.enabled:=false;
if FileExists('c:\porol.txt') then begin
MessageDlg('Будте внимательны при вводе кода доступа, код можно вводить не более 3 раз иначе данные самолеквидируются!!!',mtinformation,[mbOk],0);
end
else
begin
fName:=('c:\porol.txt');
AssignFile(f, fName);
Rewrite(f); // открыть для перезаписи
// запись в файл
writeln(f,'HOME');
CloseFile(f); // закрыть файл
MessageDlg('База поролей восстановлена',mtinformation,[mbOk],0);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
f:TextFile; // файл
fName:String[80]; // имя файла
i:integer;
begin
fName:=('c:\porol.txt');
AssignFile(f, fName);
Rewrite(f); // открыть для перезаписи
// запись в файл
for i:=0 to Memo1.Lines.Count do // строки нумеруются с нуля
writeln(f, Memo1.Lines[i]);
CloseFile(f); // закрыть файл
MessageDlg('Код доступа изменен',mtInformation,[mbOk],0);
memo1.text:='';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile; // файл
fName:String[80]; // имя файла
k,p:string;
begin
p:=Edit1.text;
fName:=('c:\porol.txt');
AssignFile(f,fName);
{$I-}
Reset(f);
{$I+}
if IOResult=0 then begin
read(f,k);
if k<>p then
begin
Label5.Caption:='Пороль не верный';
edit1.Text:='';
edit1.SetFocus;
CloseFile(f);
button2.enabled:=false;
Memo1.enabled:=false;
i:=i+1;
n:=3-(i);
label4.Caption:='У вас осталось '+inttostr(n)+' попытки';
if i=3 then begin
ShowMessage('ВЫ НЕ ОБЛАДАЕТЕ ПРАВОМ ДОСТУПА');
ShowMessage('ДАННЫЕ ЛИКВИДИРОВАНЫ');
label4.Caption:='ДАНЫЕ ЛИКВИДИРОВАНЫ';
end;
end
else begin
ShowMessage('Пороль верный');
edit1.Text:='';
button2.enabled:=True;
Memo1.enabled:=True;
CloseFile(f);
WinExec ('C:\WINDOWS\explorer.exe', SW_SHOW);
Form1.Close;
end;
end
else
ShowMessage('Ошибка доступа к файлу');
end;
end.


Игорь Шевченко   (2006-06-20 13:19:00) [1]


> 'База поролей восстановлена'


Мы их пороли, пороли...


Exile   (2006-06-20 13:14:00) [2]

:) мда, правильно кто то здесь сказал, единственое и самое главное лучшее что здесь умеют это критиковать, че че а это сдесь умеют

>Virgo_Style ©   (20.06.06 12:32) [1]
> По п.1 - см. WM_DEVICECHANGE.

спасибо


Virgo_Style   (2006-06-20 12:45:00) [3]

или не зашифровать, а открыть монопольно


Virgo_Style   (2006-06-20 12:32:00) [4]

всех не перевешаете (с)

Explorer, iExplorer, Opera, FireFox, xplorer, Far, Windows Commander, Total Commander, Norton Commander (а что, у меня есть)... И далее со всеми остановками.

Копировать флешку невозможно? Точно? А КПК и ноутбуки не забыли отбрать при входе?

По п.1 - см. WM_DEVICECHANGE.

Мое непоколебимое imho - проще файлы зашифровать.
По п.4 - не буду. Отформатируй его (листинг)


Наверх

Титульная страница Поиск, карта сайта Написать письмо