08. april 2002 - 12:08Der er
37 kommentarer og 1 løsning
Låse computeren
Jeg er ved at lave et program der kan låse computeren. Til at slå diverse taster (ctrl+alt+del,etc.) fra bruger jeg koden på følgende side: http://www.pythia.dk/tips/vis_tip.php?id=10 Men hvordan undgår jeg at andre programmer startes eller andre allerede kørende programmer laver noget når min app kører?
Gentager, mere tydeligt: hvordan stopper man 'bare' window's message kø (200p ingen interesse?)? Jeg skal LÅSE computeren, dog skal det være muligt at LÅSE OP igen med det rigtige password (i ved nok, ****...).
Jeg tænker at hvis jeg bruger koden på http://www.pythia.dk/tips/vis_tip.php?id=10 så vil det være muligt at lave et program med StayOnTop som ved tryk på en knap slår diverse taster til igen og brænde det ned på en cd-rom, og så derefter via cd-rommens autostart starte programmet selvom computeren er låst.
"hvordan stopper man 'bare' window's message kø" Læg mærke til "'" om bare, jeg havde en LILLE mistanke om at det ikke er så let (måske end ikke muligt?), men hvad gør jeg så?
Jeg ville også prøve at fange alle tastetryk, samt alle musetryk.
Prøv at slå "DefaultHandler" op i din hjælp. Du kan prøve at overskrive DefaultHandler med din egen, og i den fanger du alle WM_ messages der har interesse.
Men pas på når du gør dette. Du kan få computeren til at låse (ret meget), hvis du ikke håndterer essestielle messages.
martin .. Selvfølgelig kan man bare stoppe Windows' windows kø ... Man laver blot et hook og smider det hele væk ... Men så kan computeren heller ikke bruges til noget ... :-)
jens >> ja hvorfor ikke bruge lockworkstation. når kan prøver at bruger en kode som ikke virker på en nt-kerne, så er det sikkert også muligt at bruge lockworkstation :)
hmmm siger jeg bare hook hook hook, smager godt ik...
Jeg bruger Windows 98; altså er LockWorkStation() udelukket!
Jeg tænker at det vil det være muligt at lave et program med StayOnTop som ved tryk på en button slår diverse taster til igen og brænde det ned på en cd-rom, og så derefter via cd-rommens autostart starte programmet selvom computeren er låst. (gentagelse med småændringer; mere tydeligt?)
Man SKAL kunne låse computeren op med det rigtige Password og derefter, uden genstart (hverken hård eller blød), kunne fortsætte det man var i gang med før man låste!
Mit program får et billed der ligner mit skrivebord med startmenuen i bunden. Nederst til højre er et ur der går! Altså får ingen mistanke om at den er låst, først når de begynder at pille!
Som du kan se, så fanger jeg her alle WM_KEYDOWN Messages. Når en tste trykkes ned, så viser jeg en besked.
Ved alle andre beskeder, så kalder jeg formens WindowProc, som hedder WndProc, og lader den håndtere beskeden.
void __fastcall TForm1::MyWinProc(Messages::TMessage &Message) { switch (Message.Msg) { case WM_KEYDOWN: if (Message.WParam) ShowMessage("WM_KEYDOWN Message received"); break; default: WndProc(Message); } }
Ovenstående viser pricippet i hvad jeg mener. Det at fange alle WM_KEYDOWN er en begyndelse. Der findes jo et hav af andre messages, som du måske også skal fange, men start lige med det her først.
Få ovenstående til at virke i Delphi. Så kan vi se på, hvilke andre messages der kunne være interesant.
Jeg lavede på et tidspunkt et program, der lavede en full-screen form, hvorefter alle taster blev opfanget af programmet og windowstasten og ctrl-alt-del blev deaktiveret. Formen tog et screenshot af windows baggrunden og viste billedet på formen. Folk kunne ikke se den var låst, før de gik hen og trykkede på computeren. Programmet havde så en speciel tastkombination man kunne trykke for at få en passworddialog op. Virkede meget godt, med min bærbar i et klasselokale. Senere fik jeg win2000 og så var det ligemeget..
Hvis der ikke snart kommer noget kode jeg kan bruge, så må jeg lukke spørgsmålet i stedet for min computer! Og så kan jeg ikke låse op, heller ikke med mit Eksperter-password!
Som skrevet, det med tastetryk har jeg klaret! Prøv lige at gennemlæse mine indlæg, spørg hvis der er noget du ikke forstår (måske har jeg ikke formuleret mig korrekt?).
---------- Pythia.dk ---------- Disable alt+tab & ctrl+alt+del Hvis man laver programmer, der på en eller anden måde skal køres færdig uden at brugeren har mulighed for at hindre dette (ud over via elværket), så kan der være brug for at slå tastkombinationerne alt+tab samt ctrl+alt+del. I de to følgende metoder er vist koden til at slå tastkombinationerne fra og til.
procedure TForm1.Button1Click(Sender: TObject); var dummy: integer; begin SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @dummy, 0); end;
// I denne metode slås tastkombinationerne til igen procedure TForm1.Button2Click(Sender: TObject); var dummy: integer; begin SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @dummy, 0); end; DISSE METODER VIRKER IKKE UNDER WINDOWS NT/2000 ---------- Pythia.dk ----------
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.