Форум: "Основная";
Текущий архив: 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