PDA

View Full Version : غیر فعال کردن کلیدهای سیستمی



mpmsoft
شنبه 08 اردیبهشت 1386, 13:10 عصر
دوستان من چطوری می تونم بعضی از کلیدهای ویندوز رو غیر فعال کنم

مثلا می خوام وقتی برنامه اجرا می شه کلید Menu Start از روی کیبور غیر فعال بشه

کلید Ctrl + Alt + Delete غیر فعال بشه
کلید Alt + Tab غیر فعال بشه

و غیره
خلاصه فقط کاربر بتونه بابرنامه کار کنه و به هیچ جای ویندوز دسترسی نداشته باشه

__siavash__
شنبه 08 اردیبهشت 1386, 14:12 عصر
برای غیر فعال کردن تسک منیجر میتونی هم از تو ریجستری این کار رو بکنی و هم اینکه ببینی هر وقت این پنجره باز شد با تابع Sendkeys کلیدهای آلت و F4 رد بفرستی تا ببنددش.

برای غیر فعال کردن Menu Start میتونی با تابه Findwindow هندلشو بگیری بعد با تابع Enablewindow اونو غیر فعال کنی حتی همین کار رو هم میتونی با تسک منیجر بکنی یا با تابع ShowWindow اونو Hide کنی

برای Alt + Tab اگه دسکتاپ و نوار وظیفه پایین رو غیر فعال کنی کارت راه نمیوفته ؟؟

__siavash__
شنبه 08 اردیبهشت 1386, 14:17 عصر
اگه نام کلاس تسک منیجر و Start Menu و نوار وظیفه و ... رو (ورودی های تابع Findwindow )خواستی بگو تا این جا بذارم !

aaaa_bbbb
شنبه 08 اردیبهشت 1386, 15:42 عصر
مطمئن ترین راهش اینکه از توی رجستری ببندیش

S_VB.max
شنبه 08 اردیبهشت 1386, 17:25 عصر
Hide Taskbar and disable Alt+Tab , Ctrl+Esc , CTRL+TAB , and the Windows System keys

Put this in a module

Option Explicit

' General Declares:
Public TaskbarHwnd As Long ' Containts Windows Taskbar visibility status.
Public KBDhwnd As Long ' Disable Windows key codes (Alt+TAB, Ctrl+ESC)

' Declarations to enable frmMain to cover entire screen, and for hiding/displaying the Windows Taskbar, and frmDebug.
Public Declare Function GetSystemMetrics Lib "user32" (ByVal vIndex As Long) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
' Supporting Constants. (interspersed)
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Public Const SM_CXFULLSCREEN = 16
Public Const SM_CYFULLSCREEN = 17
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Public Const HWND_TOP = 0
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_SHOWWINDOW = &H40
Public Const SWP_HIDEWINDOW = &H80

' Stuff to keep CTRL+TAB, ALT+TAB, CTRL+ESC, and the Windows System keys from being used.
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public 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
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_DELETE = &H2E
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 KBD As KBDLLHOOKSTRUCT


Public Function CatchKeys(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Dim bEatIt As Boolean: bEatIt = False

If (nCode = HC_ACTION) Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
CopyMemory KBD, ByVal lParam, Len(KBD)
bEatIt = ((KBD.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0)) Or _
((KBD.vkCode = VK_TAB) And ((KBD.FLAGS And LLKHF_ALTDOWN) <> 0)) Or _
((KBD.vkCode = VK_ESCAPE) And ((KBD.FLAGS And LLKHF_ALTDOWN) <> 0)) Or KBD.vkCode = 91
End If
End If

If bEatIt Then
CatchKeys = -1
Else
CatchKeys = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End If

End Function




Option Explicit

Private Sub Form_Load()
Dim ret As Long
'This goes in Form_Load:
' Initialize Windows System key filtering.
ret = SystemParametersInfo(97, True, ret, 0)
KBDhwnd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CatchKeys, App.hInstance, 0)

' Hide Taskbar
TaskbarHwnd = FindWindow("Shell_traywnd", "")
Call SetWindowPos(TaskbarHwnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)


End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long

' This goes in Form_Unload:
ret = SystemParametersInfo(0, False, ret, 0)
If KBDhwnd <> 0 Then UnhookWindowsHookEx KBDhwnd

Call SetWindowPos(TaskbarHwnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
End Sub



Disable Ctrl+alt+del

Open Environ$("windir") & "\System32\TaskMgr.exe" For Binary As 1


there is other way without use registry also
Good luck