Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

SPI_SCREENSAVERRUNNING не работает...   Найти похожие ветки 

 
Worst_87   (2007-01-27 15:32) [0]

Мне надо отключить клавиатурные сочетания: Windows+D, Ctrl+Esc и - самое главное - Ctrl+Alt+Del. Пытался воспользоваться этой ф-цией ничего не получилось, все кнопки как работали, так и работают.

Подскажите, пожалуйста, реальный способ отключения системных клавиш!

P.S.: Это не шпион и не троян, это всего лишь shell :-)


 
Eraser ©   (2007-01-27 22:03) [1]

> [0] Worst_87   (27.01.07 15:32)

CAD отключать не надо, а всё остальное - можно через LL_HOOK.


 
Worst_87   (2007-01-28 15:33) [2]

Eraser не понял, простите. Я чайник :-)

Можно примерчик ф-ции для отключения хотя бы сочетаний, открывающих Главное меню?


 
Eraser ©   (2007-01-28 16:23) [3]

> [2] Worst_87   (28.01.07 15:33)

пример хука?
unit LowLevelHook;

interface

uses
 JwaWinUser, Windows, Messages, Classes;

function InitializeLowLevelHook: Boolean;
function ReleaseLowLevelHook: Boolean;

var
 HookWindowList: TList;

implementation

uses ROMConst;

var
 hLowLevelHookHandle: HHOOK;
 hProcessID: Cardinal;

function LowLevelKeyboardProc(nCode: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
var
 bHandled, bKeyDown: Boolean;
 hWindow: THandle;
 pHookStruct: PKbDllHookStruct;
 ProcessID: Cardinal;
begin
 bHandled := False;
 if nCode = HC_ACTION then
 begin
   // Определяем, нужно ли перехватывать данное окно.
   hWindow := GetFocus;
   Windows.GetWindowThreadProcessId(GetFocus(), ProcessID);
   if ProcessID <> hProcessID then
     hWindow := 0;
   if (HookWindowList.IndexOf(Pointer(hWindow)) <> -1) and (hWindow <> 0) then
   begin
     pHookStruct := Pointer(lParam);
     bKeyDown := (wParam = WM_KEYDOWN) or (wParam = WM_SYSKEYDOWN);
     case pHookStruct.vkCode of
       VK_TAB:
         begin
           if (pHookStruct.flags and LLKHF_ALTDOWN) <> 0 then
             if bKeyDown then
             begin
               PostMessage(hWindow, LL_MSG, LL_MSG_PARAM_ALT_TAB, 0);
               bHandled := True;
             end;
         end;
       VK_LWIN:
         begin
           if bKeyDown then
             PostMessage(hWindow, LL_MSG, LL_MSG_PARAM_LWIN_DOWN, 0)
           else
             PostMessage(hWindow, LL_MSG, LL_MSG_PARAM_LWIN_UP, 0);
           bHandled := True;
         end;
       VK_RWIN:
         begin
           if bKeyDown then
             PostMessage(hWindow, LL_MSG, LL_MSG_PARAM_RWIN_DOWN, 0)
           else
             PostMessage(hWindow, LL_MSG, LL_MSG_PARAM_RWIN_UP, 0);
           bHandled := True;
         end;
     end;
   end;
 end;
 if bHandled then
   Result := 1
 else
   Result := CallNextHookEx(hLowLevelHookHandle, nCode, wParam, lParam)
end;

function InitializeLowLevelHook: Boolean;
begin
 hProcessID := GetCurrentProcessId;
 hLowLevelHookHandle := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc,
   HInstance, 0);
 Result := hLowLevelHookHandle <> 0;
end;

function ReleaseLowLevelHook: Boolean;
begin
 if hLowLevelHookHandle <> 0 then
   Result := UnhookWindowsHookEx(hLowLevelHookHandle)
 else
   Result := False;
end;

initialization
 HookWindowList := TList.Create;

finalization
 HookWindowList.Free;
end.


только его под свои условия конечно переделай, тут лишнего много.


 
Worst_87   (2007-01-28 17:55) [4]

И что, с этим хуком не будут работать все клавиши, которые мне нужны?


 
Eraser ©   (2007-01-28 20:08) [5]

> [4] Worst_87   (28.01.07 17:55)

у настрадамуса спроси )



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
15-1172594281
ArtemESC
2007-02-27 19:38
2007.03.25
Завалил последний экзамен на последней пересдаче...


2-1173010622
Roman_S
2007-03-04 15:17
2007.03.25
Как учесть клавишу "BACKSPACE"?


6-1160395281
progmax
2006-10-09 16:01
2007.03.25
Таймер в cgi


15-1172679784
koha
2007-02-28 19:23
2007.03.25
Идикатор (св.-диод) чтения жесткого диска горит постоянно


15-1172428433
Cyrax
2007-02-25 21:33
2007.03.25
Священные войны по ЯП





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский