Capitolul 10 Autentificare

Formularul de înregistrare Rezultatul trebuie să se potrivească cu figura. 10.1.

Fig. 10.1. Formular pentru programul de conectare

Declararea ca membri privați ai formelor de clasă un tip HWND variabilă și două proceduri pentru a dezvolta un pic mai târziu:

h1: HWND; // variabila care conține un identificator de fereastră

Procedura de autentificare (); // blocheaza totul pana cand parola este

procedure_check (); // verifica corectitudinea parolei

Acum, în secțiunea de punere în aplicare va crea procedurile propriu-zise. Procedura de verificare În primul rând:

dacă pass.Text = „parola“ atunci // dacă parola este corectă

// găsi Desktop identificator

// permite lucrul cu desktop

// găsi bara de activități de identificare

// permite Taskbar

opri; // închide programul

end // în caz contrar, un mesaj care indică o parolă incorectă

ShowMessage altceva ( 'parolă greșită!');

verifica controale procedură parola este corectă. În acest caz, parola este folosit cuvântul „parola“. În cazul în care câmpul este introdus cuvântul trece, apoi deblocați desktop și bara de activități. După aceea, accesul la tot ceea ce este deschis și suntem finalizarea programului. Dacă textul introdus de utilizator nu coincide cu parola corectă, atunci vom continua să solicite o parolă.

Acum, toate procedurile de conectare:

// găsi Desktop identificator

h1: = FindWindow ( 'Progman', zero);

ShowWindow (sw_hide h1.); // ascunde Birou

// găsi bara de activități

h1: = FindWindow ( 'Shell_traywnd', zero);

ShowWindow (sw_hide h1.); // ascunde bara de activități

h1: = FindWindow (zero, 'zadachWindows managerului');

în cazul în care (H1 <> 0) apoi PostMessage (h1, WM_QUIT, 1, 0);

Aici vom bloca desktop și bara de activități, și apoi verificați dacă utilizatorul nu este încercarea de a opri programul nostru folosind Task Manager. Dacă fereastra Task Manager este deschis, închideți-l.

Acum avem aproape nici o programare - noi pur și simplu apel există proceduri de conectare. Când apăsați butonul Enter, o verificare procedură:

Procedura TForm1.Button1Click (Expeditor: TObject);

Pentru a nu deranja utilizatorul apasă un buton de pe forma, simularea funcționării prin apăsarea tastei în câmpul trecere . Pentru a face acest lucru, creați un pass.OnKeyRgess de tratare a evenimentului:

Procedura TForm1.passKeyPress (Expeditor: TObject; var cheie: Char);

în cazul în care tasta = # 13 atunci // dacă este apăsată tasta

verifica; // apelează procedura de verificare

# 13 este un cod de cheie .

caractere de la tastatură și codurile-cheie sunt enumerate în Anexa A.

Pentru un prim cronometru OnTimer eveniment va conține numai procedura de apel de logare:

Procedura TForm1.Timer1Timer (Expeditor: TObject);

Pentru al doilea timer-ul (care Interval de proprietate este setat la 1000) pentru a adăuga o tratare a evenimentului OnTimer următorul cod:

Procedura TForm1.Timer2Timer (Expeditor: TObject);

h1: = FindWindow ( 'Progman', zero); // Căutare pe desktop

ShowWindow (h1, sw_hide); // ascunde Birou

CloseWindow (h1); // opriți fereastra de pe desktop

treci .SetFocus; // muta cursorul în caseta de text

Folding fereastra Desktop închide meniul Start sistem, în cazul în care acesta este deschis. În final, utilizatorul nu are acces la spațiul de lucru, în bara de activități în meniul Start și managerul de activități, cu toate acestea, în ciuda faptului că programul nostru nu are un titlu, acesta poate fi închis cu ajutorul comenzilor rapide de la tastatură . Pentru a dezactiva această funcție, creați o tratare a evenimentului OnCloseQuery forma principală și adăugați următorul cod:

Procedura TForm1.FormCloseQuery (Expeditor: TObject; var CanClose: Boolean);

Singurul lucru de făcut - să furnizeze program de pornire, specificați calea către acesta în registru. Pentru a lucra cu registru trebuie să fie adăugate la clauza utilizărilor unei trimiteri la modulul Registry, după care creează următoarele forme de tratare a evenimentului OnCreate:

Procedura TForm1.FormCreate (Sender; TObject);

Reg: TRegistry; // variabila de a lucra cu registrul

Reg.RootKey: = HKEY_CURRENT_USER; // pentru utilizatorul curent

Reg .OpenKey ( 'Software \ Microsoft \ Windows \ CurrentVersion \ Run', true); // deschide secțiunea de pornire a registrului

// și scrie numele și calea completă la programul nostru

Reg.CloseKey; // închide registrul

Reg.Free; // eliberați memoria

Programul nostru va fi acum descărcat pentru utilizatorul curent cu sistemul și necesită o parolă. Programul în acțiune este prezentată în Fig. 10.2.

Ferestre, Mesaje, SysUtils, variante, Clase, Grafică, Controale, Formulare, Dialoguri, StdCtrls, ExtCtrls, Registrul;

tip TForm1 = class (TForm)

Procedura Button1Click (Expeditor: TObject);

Procedura passKeyPress (Expeditor: TObject; var cheie: Char);

Procedura FormCloseQuery (Expeditor: TObject; var CanClose: Boolean);

Procedura FormCreate (Expeditor: TObject);

Procedura Timer1Timer (Expeditor: TObject);

Procedura Timer2Timer (Expeditor: TObject);

h1: HWND; // variabila care conține un identificator de fereastră

Procedura de autentificare (); // blochează totul până când parola este introdusă corect

verificare procedură (); // verifica corectitudinea parolei

dacă pass.Text = „parola“ atunci // dacă parola este corectă

// găsi Desktop identificator

// permite lucrul cu desktop

// găsi bara de activități de identificare

// permite Taskbar

opri; // închide programul

end // în caz contrar, un mesaj care indică o parolă incorectă

ShowMessage altceva ( 'parolă greșită!');

// găsi Desktop identificator

h1: = FindWindow ( 'Progman', zero);

ShowWindow (h1, sw_hide); // ascunde Birou

// găsi bara de activități

h1: = FindWindow ( 'Shell_traywnd', zero);

ShowWindow (h1, sw_hide); // ascunde bara de activități

h1: = FindWindow (zero, 'zadachWindows managerului');

în cazul în care (H1 <> 0) apoi PostMessage (h1, WM_QUIT, 1, 0);

Procedura TForm1.Timer1Timer (Expeditor: TObject);

articole similare