Avatar billede epimetheus Nybegynder
08. november 2007 - 20:44 Der er 16 kommentarer

Disable ctrl+alt+delete

Jeg har lavet en form i maksimeret / full screen uden ramme.
Formen må kun kunne lukkes med en knap på formen.

Altså skal følgende tastaturtryk disables.

ctrl+alt+delete
alt+F4
Begge Windows knapper

Hvordan gør man det?

Er der andre tastatur tryk der kan lukke, eller tage fokus fra en form?

Jeg bruger for øvrigt VB.NET 2003
Avatar billede Slater Ekspert
08. november 2007 - 20:55 #1
Avatar billede epimetheus Nybegynder
08. november 2007 - 21:35 #2
Jeg har været forbi den side.
Det er skrevet i VB6 og jeg har ikke helt formået at omskrive det til .NET

Dit link besvarer om ikke andet, hvilke tastatur tryk der skal til for at lukke eller fjerne fokus fra en form.
Avatar billede epimetheus Nybegynder
08. november 2007 - 22:11 #3
Den DLL fil der skal bruges er vist kun til VB6.
Når man pakker ZIP filen ud, er der kun .vbp .bas .cls

Jeg har fundet følgende over filtypen .vbp
.vbp Visual Basic Ver. 4.0-6.0 Project (Microsoft Corporation
Avatar billede epimetheus Nybegynder
09. november 2007 - 15:44 #4
Jeg har fundet den her
http://addressof.com/blog/archive/2005/04/06/1668.aspx

Desværre får jeg denne fejl når jeg kører programmet.
http://peecee.dk/?id=77625

Er det bare en tilpasning af framework der skal til, eller hvad?
Avatar billede epimetheus Nybegynder
09. november 2007 - 16:06 #5
Fejlen var tilsyneladende at applikationen skal køres lokalt fra computeren.
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=556984&SiteID=1
Avatar billede epimetheus Nybegynder
12. november 2007 - 00:17 #6
Har ikke fået det til at virke.

Er der en der har en løsning der virker?
Avatar billede epimetheus Nybegynder
12. november 2007 - 04:10 #7
Jeg har valgt en lidt anden løsning.
Følgende link beskriver hvordan man i registreringsdatabasen kan ændre i scankoden for tastaturet, så nogle af tasterne ikke virker.

http://support.microsoft.com/kb/216893
http://www.barcodeman.com/altek/mule/scandoc.php
http://smallvoid.com/article/winnt-scancode-map.html
http://www.microsoft.com/whdc/device/input/w2kscan-map.mspx

Det bruger jeg så til at slå følgende taster fra.
Højre og venstre Windows tast.
Højre og venstre control tast.
F4

Her er registrerings stien der skal ændres.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout


Ændringerne træder først i kraft ved genstart.
Det har selvfølgelig den ulempe at tasterne heller ikke virker i andre programmer.
Det betyder dog ikke noget i mit tilfælde, da ovennævnte taster ikke skal bruges i min applikation.
Avatar billede lord_mike Nybegynder
16. november 2007 - 00:32 #8
Jeg kan godt compilere den dll hvis det skulle være...

Har VB6... :)
Genialt program...
Avatar billede epimetheus Nybegynder
22. november 2007 - 17:01 #9
Hvad mener du med at compilere?
Avatar billede lord_mike Nybegynder
22. november 2007 - 17:02 #10
Lave det om til en DLL... :P
Avatar billede tjomsen Nybegynder
25. november 2007 - 13:25 #11
Andre tastaturtryk der kan tage fokus af din form:

Ctrl+Shift+Esc - Åbner Windows jobliste
Ctrl+Esc - Åbner start
Alt+Esc - Man kan skifte mellem vinduer
Alt+Tab - Man kan skifte mellem vinduer

Prøv at tage et kig på det her:
http://vbforums.com/showpost.php?p=2149639&postcount=9

Kører du Windows XP virker koden 100% men kører du Vista kan den ikke lukke Joblisten ned fordi den jo i Vista ikke åbner Joblisten med det samme, den åbner først en slags menu hvor man kan vælge at lukke pc'en, låse pc'en, åbne joblisten osv. osv.
Avatar billede tjomsen Nybegynder
25. november 2007 - 13:28 #12
EDIT: men ALLE andre kombinationer er blevet slået fra både i XP og Vista!
Avatar billede epimetheus Nybegynder
28. november 2007 - 06:43 #13
lord_mike: Kan du forklare lidt nærmere hvordan man laver sådan en DLL og hvordan man bruger den i praksis?

tjomsen: Det skal kun fungere i XP. Det skal faktisk kun bruges på en enkelt maskine. Hvis Ctrl tasten ikke virker, vil ingen af dine Ctrl eksempler slippe igennem. Der bliver kun et vindue åben, så man kan ikke skifte imellem vinduerne.

Jeg har ikke fået afprøvet koden i linket.
Avatar billede lord_mike Nybegynder
28. november 2007 - 08:29 #14
Man laver den af et sæt classes / funktioner, og får derved {randomname}.dll.

Denne fil kan du referere til fra dit program, som du ville referere til alle andre eksterne biblioteker. Så kan man så bruge den som et object.

F.eks.
Dim T as {Randomname}

T.{Din Funktion}

Håber det hjælper.
Avatar billede mathiasovesen Nybegynder
31. januar 2008 - 20:18 #15
Her er en metode til at blokere Ctrl+Alt+Del, kender desværre ikke løsningen på de andre knapper...

Imports System.Threading

Public Class Form1

    Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        KillTaskMgr()
    End Sub

    Public Function KillTaskMgr() As Boolean
        On Error Resume Next
        Dim i As Int32
        Do
            Dim clt() As Process = Process.GetProcessesByName("taskmgr")
            For Each p As Process In clt
                p.Kill()
            Next
            Thread.Sleep(1)
            i += 1
            If i = 200 Then Exit Do
        Loop
    End Function
End Class
Avatar billede lord_mike Nybegynder
01. februar 2008 - 00:19 #16
Ctrl + Alt + Del er IKKE ensbetydende med taskmgr...

Du får f.eks. et vindue hvor du kan vælge at logge af / låse computern / task mgr... På langt de fleste computere...
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
Kurser inden for grundlæggende programmering

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