![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
может кто подскажет как решить проблему
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 - не буду. Отформатируй его (листинг)