Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Внизможет кто подскажет как решить проблему Найти похожие ветки
← →
Exile (2006-06-20 11:48) [0]Привет всем, вот пишу програмку смысл которой в следующем: работает в фоновом режиме, и постоянно проверяет подключены ли флешки к компу, если подключены проверяет их содержимое на наличие определенных файлов, если файлы найдены то блокирует комп и вежливо просит ввести код доступа к этой флеше, вот часть кода, внем есть косяки вроде таких как:
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.
← →
Virgo_Style © (2006-06-20 12:32) [1]всех не перевешаете (с)
Explorer, iExplorer, Opera, FireFox, xplorer, Far, Windows Commander, Total Commander, Norton Commander (а что, у меня есть)... И далее со всеми остановками.
Копировать флешку невозможно? Точно? А КПК и ноутбуки не забыли отбрать при входе?
По п.1 - см. WM_DEVICECHANGE.
Мое непоколебимое imho - проще файлы зашифровать.
По п.4 - не буду. Отформатируй его (листинг)
← →
Virgo_Style © (2006-06-20 12:45) [2]или не зашифровать, а открыть монопольно
← →
Exile (2006-06-20 13:14) [3]:) мда, правильно кто то здесь сказал, единственое и самое главное лучшее что здесь умеют это критиковать, че че а это сдесь умеют
>Virgo_Style © (20.06.06 12:32) [1]
> По п.1 - см. WM_DEVICECHANGE.
спасибо
← →
Игорь Шевченко © (2006-06-20 13:19) [4]
> "База поролей восстановлена"
Мы их пороли, пороли...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c