Подскажите пожалуйста, как программно заблокировать кнопку "Пуск" (т.е. чтобы при нажатии на клавиатуре не появлялось меню "Пуск"). Заранее благодарен...
Сразу скажу, что практически это сделать очень сложно. Дело в том, что можно с легкостью, левой задней пякой, заблокировать саму кнопку Пуск от мышки, а вот меню с клавиатуры - фигушки. Придется попотеть. Там другой немного подход нужен От мышки все делается просто: берешь хэндл кнопки пуск и прото ставишь его свойство Enabled в False.
Да с "Пуском" можно делать что хошь, хоть таскать по рабстолу, но вот только при нажатии на клаве Ctrl+Esc или WinButton (такое с окошком) всплывет менюшка, а этого то и не надобно. Кстати, ты знаешь, как этот WinButton блокануть?
Option Explicit Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long Private Const SPI_SCREENSAVERRUNNING = 97 Private Sub Form_Load() Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, 0, 0) MsgBox "Нажмите-ка winkey или три кнопки!)" End Sub
Честный способ Вообще, мона поставить хук на клаву и _теоритически_ мочить нажатие всяких аккордов, винкеев и пр...
Если кого заинтересовал хук на клаву, вот пример :
'In a module Public Const WH_KEYBOARD = 2 Public Const VK_SHIFT = &H10 Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer 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 Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public hHook As Long Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 'if idHook is less than zero, no further processing is required If idHook < 0 Then 'call the next hook KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam) Else 'check if SHIFT-S is pressed If (GetKeyState(VK_SHIFT) And &HF0000000) And wParam = Asc("S") Then 'show the result Form1.Print "Shift-S pressed ..." End If 'call the next hook KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam) End If End Function
'In a form, called Form1 Private Sub Form_Load() 'KPD-Team 2000 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net 'set a keyboard hook hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID) End Sub Private Sub Form_Unload(Cancel As Integer) 'remove the windows-hook UnhookWindowsHookEx hHook End Sub