Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.013 c
6-1132640622
Дмитрий_05
2005-11-22 09:23
2006.07.09
Снифер HTTP-запросов


2-1150812270
resuS
2006-06-20 18:04
2006.07.09
модуль для работы с динамическими типами данных


3-1147116316
Галинка
2006-05-08 23:25
2006.07.09
Сохранить массив в БД


2-1149885371
Normality
2006-06-10 00:36
2006.07.09
Простое БД-приложение


15-1149844136
homm
2006-06-09 13:08
2006.07.09
Отладка JavaScript





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский