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
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ă
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);