Главная страница
    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.776 c
2-1172674959
Lonix
2007-02-28 18:02
2007.03.25
Вопрос по SMTP


15-1172731482
Cyrax
2007-03-01 09:44
2007.03.25
AllFusion ERwin Data Modeler: проблема имён


4-1161332775
Dmitry_177
2006-10-20 12:26
2007.03.25
будильник на API


4-1162809133
Avokain
2006-11-06 13:32
2007.03.25
Посылка текста в активное окно(Edit) другого приложения


15-1172653890
Elen
2007-02-28 12:11
2007.03.25
Вопрос про кривые OCX





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский