Avatar billede r.hegaard Nybegynder
18. juli 2006 - 15:45 Der er 10 kommentarer og
2 løsninger

Disable CTRL+ALT+DELETE fra C#

Hvordan kan man fra et C# program disable CTRL+ALT+DELETE mens programmet kører?
Avatar billede musicchart.dk Nybegynder
18. juli 2006 - 17:20 #1
Uha, det håber jeg da ikke man kan...
Avatar billede hmortensen Nybegynder
18. juli 2006 - 17:27 #2
Man kan godt, men det er en halvbesværlig operation. Tror ikke det umildbart kan løse i .NET uden en C++ driver.
Avatar billede driis Nybegynder
18. juli 2006 - 18:14 #3
Spørgsmålet har været oppe før, prøv at søge efter det.

At disable CTRL+ALT+DELETE er ret svært, idet Windows hægter et hardware-interrupt op til sekevensen under opstart. Derfor kan CTRL+ALT+DELETE ikke fanges med hooks og lign.

Forslag, der før har været fremme og som bør virke (jeg mangler stadig at se en fungerende implementation af begge):
* Implementer en keyboard driver i C++, der gør noget andet med tastetrykket.
* Implementer en ny MSGINA.dll (search google), der gør noget andet med tastetrykket.

Begge dele er der en del arbejde i; og det skal gøres i native kode og dermed C/C++ (typisk). Metoden med driveren kan være upraktisk hvis brugeren har et keyboard der i forvejen bruger en specieldriver (læs: Mange af de nye multimedie keyboards med ekstra knapper).
Avatar billede mcgoat Nybegynder
19. juli 2006 - 11:10 #4
hmm.. ser ud til der er massere af kodeeksempler på dette.. dog kun med VB. Kan ikke finde nogen der virker med C#
Avatar billede mcgoat Nybegynder
19. juli 2006 - 11:51 #5
VB kode. Om man kan lave det om til C3 skal jeg ikke lige kunne sige :)




Private Const SPI_SCREENSAVERRUNNING = 97&

Private Declare Function SystemParametersInfo Lib "User32" _
    Alias "SystemParametersInfoA" _
  (ByVal uAction As Long, _
    ByVal uParam As Long, _
    lpvParam As Any, _
    ByVal fuWinIni As Long) As Long

Private Sub Command1_Click()
  Dim lngRetVal As Long
  Dim blnPrevValue As Boolean
  lngRetVal = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, _
              blnPrevValue, 0&)
End Sub
Avatar billede mcgoat Nybegynder
19. juli 2006 - 11:51 #6
Irriterende man ikke kan rette i sine poster. mente selvfølgelig C# og ikke C3
Avatar billede hmortensen Nybegynder
19. juli 2006 - 12:06 #7
Ovenstående kode snip er vel VB og ikke VB.NET, så det direkte kan omskrives.
Avatar billede driis Nybegynder
19. juli 2006 - 19:54 #8
VB kodestumpen herover, fungerer svjv kun på Windows ME/98 og tidligere. Den narrer systemet til at tro, at screensaveren kører.
Avatar billede hmortensen Nybegynder
19. juli 2006 - 20:03 #9
Ja screensaver delen i de gamle systemer var så fuld af fejl :)
Den blokkerede ikke for det interupt som CD autorun sender, så man kunne på den måde bypasse password på screensaver ved at sætte en CD i.
Avatar billede r.hegaard Nybegynder
14. august 2006 - 17:24 #10
Så vidt jeg har forstået, så er det ikke muligt at klare fra C#.
Så jeg lukker inden længe...
Avatar billede r.hegaard Nybegynder
28. august 2006 - 08:37 #11
driis>> Jeg er kommet så langt, at jeg er begyndt at kigge på at lave en ny implementering af MSGINA.DLL. Jeg synes dog ikke, at det ser ud som om at det hjælper. Man kan bare lade være med at håndtere tastetrykket i den nye MSGINA.DLL.
Men Windows opfanger stadig tastetrykket og lukker f.eks. den kørende pauseskærm ned (selvom den ikke reagerer på tastetryk). Kan man lave noget smart, så tastetrykket slet ikke fanges??
Avatar billede r.hegaard Nybegynder
30. august 2006 - 11:55 #12
Jeg lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester