Gå til innhold

Anbefalte innlegg

Hei jeg lager ett programm til min bror. Han er 6 år. og liker og ødelegge pcen min. Så jeg tenkte jeg kunne lage ett program slik han kan åpne spill men ikke ødellege.

 

Hvis noen har en kode for å låse start menyen og låser ctrl alt del.

 

Eller en kode som åpner start mey mappen slik att han kan åpne spill uten å kunne ødelegge noe.

 

Så hadde det vært veldig greit. :thumbs:

Lenke til kommentar
Videoannonse
Annonse

Jada, det er fult mulig å låse start-menyen, eller rettere sakt, fjerne den helt!

Den kan imidlertid fås tibake igjen (I XP kan man trykke på "Egenskaper" der start-knappen skulle ha stått, så skifte på en egenskap, trykke på OK og få knappen tilbake igjen)

 

Du kunne f.eks få dette programmet her til å starte opp på bror din sin bruker:

 

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Private Const SW_HIDE = 0
Private Const SW_NORMAL = 1

Dim tWnd As Long, bWnd As Long

Private Sub Form_Load()

tWnd = FindWindow("Shell_TrayWnd", vbNullString)
bWnd = FindWindowEx(tWnd, ByVal 0&, "BUTTON", vbNullString)
ShowWindow bWnd, SW_HIDE
End

End Sub

 

Du ser at den avslutter seg igjen når den er ferdig, men dette er ikke nødvendig. Hvis du vil så kan du lage en timer og la den fjerne start-knappen hver 10 sekund.

 

Når det gjelder å fjerne Ctrl-Alt-Delete kan det bli et problem. Den eneste måten å gjøre dette i NT, 2000 og XP er å endre på system registeret. Har du Windows 98, 95 eller ME kan du bruke denne koden:

 

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

Private Function DisableCtrlAltDelete(bDisabled As Boolean) As Long

DisableCtrlAltDelete = SystemParametersInfo(97, bDisabled, CStr(1), 0)

End Function

Private Sub Form_Load()

DisableCtrlAltDelete True

End Sub

 

Jeg har sett artikler på internet som forteller at man i Windows XP ganske enkelt kan slette taksmgr.exe for å hindre Ctrl-Alt-Delete, men jeg er ikke sikker på om dette virker. Søk litt på google så finner du sikkert en artikel om hvordan stoppe Ctrl-alt-delete i registeret.

Endret av aadnk
Lenke til kommentar

Ok, jeg kom ikke på det. Beklager. Her er iallefall koden for å fjerne muligheten for å trykke på Windows-tastene, Alt-Tab, Alt-Esc, Ctrl-Esc:

 

Legg dette i en .BAS modul

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Const HC_ACTION = 0
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105
Public Const VK_TAB = &H9
Public Const VK_CONTROL = &H11
Public Const VK_ESCAPE = &H1B

Public Const VK_LWINKEY = &H5B      ' The Window's key on the left of the keyboard
Public Const VK_RWINKEY = &H5C      ' The Window's key on the right of the keyboard

Public Const WH_KEYBOARD_LL = 13
Public Const LLKHF_ALTDOWN = &H20

Public Type KBDLLHOOKSTRUCT
   vkCode As Long
   scanCode As Long
   flags As Long
   time As Long
   dwExtraInfo As Long
End Type

Dim p As KBDLLHOOKSTRUCT

Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Dim fEatKeystroke As Boolean
  
  If (nCode = HC_ACTION) Then
     If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
        CopyMemory p, ByVal lParam, Len(p)
        fEatKeystroke = _
           ((p.vkCode = VK_TAB) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _
           ((p.vkCode = VK_ESCAPE) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _
           ((p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0)) Or _
           ((p.vkCode = VK_LWINKEY) Or (p.vkCode = VK_RWINKEY))
       End If
   End If
   
   If fEatKeystroke Then
       LowLevelKeyboardProc = -1
   Else
       LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
   End If
End Function

 

Dette legges så i en form:

Dim hhkLowLevelKybd As Long

Private Sub Form_Load()

hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)

End Sub

Private Sub Form_Unload(Cancel As Integer)

If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd

End Sub

 

Dette programmet må likevel være PÅ for at det hele skal virke.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...