Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

Перехват лампочки Scroll Lock на клавиатуре   Найти похожие ветки 

 
GrBob   (2003-01-20 20:19) [0]

Подскажите, как сделать, чтобы пользователь не мог зажечь лампочку Scroll Lock(даже когда Программа.Visible=False).
+ Желательно, чтобы и программы, мигающие лампочками, тоже не работали. (Порчу клавиатуры не предлагать).


 
E_Dimon ©   (2003-01-20 22:49) [1]

Попробуйте перехват нажатий клавиш или
функцию RegisterHotKey, код клавиши Scroll Lock - VK_SCROLL


 
Fiend ©   (2003-01-21 14:03) [2]

Вообще то, он ее всегда сможет "зажечь", например зажигалкой!
Ж)


 
M@X ©   (2003-01-23 10:58) [3]

Зажечь лампочку или включить режим Scroll?
Лампочку зижигаем asm_блерным кодом (почитай доку), а чтобы пользователь не нажимал scroll - имеется компонент TПлоскогубцы для физического изничтожения батона


 
Viktor Kushnir ©   (2003-01-24 08:59) [4]

На самом деле TОтвертка + TПояльник куда лучше и безболезненее


 
Anatoly Podgoretsky ©   (2003-01-24 09:12) [5]

Наклеить непрозрачную бумажку, не совсем порча, всегда можно отклеить.


 
FH   (2003-01-24 11:12) [6]

нука, нука о б асмовском коде если можно, поподробнее...


 
Севостьянов Игорь ©   (2003-01-24 19:04) [7]

У меня есть решение хоть не идеальное и может автор хотел нечто иное, но проще говоря пользователь сможет зажеч лампочку на долю секунды, но она тут же погаснет. Вот собственно код:
---------------------
DLL
---------------------


library HookAgnt;

uses Windows,
KeyboardHook in "KeyboardHook.pas";

exports
KeyboardProc;

var
hFileMappingObject: THandle;
lpvMem: Pointer;


//----------------------------//
// DLL_PROCESS_DETACH //
//----------------------------//

procedure DLLMain(Reason: Integer);
begin

if Reason = DLL_PROCESS_DETACH then
begin
UnmapViewOfFile(lpvMem);
CloseHandle(hFileMappingObject);
end;

end;

//----------------------------//
// DLL_PROCESS_ATTACH //
//----------------------------//

begin
DLLProc := @DLLMain;

hFileMappingObject := CreateFileMapping(
THandle($FFFFFFFF), // use paging file
nil, // no security attributes
PAGE_READWRITE, // read/write access
0, // size: high 32 bits
4096, // size: low 32 bits
"HookAgentShareMem" // name of map object
);

if hFileMappingObject = INVALID_HANDLE_VALUE then
begin
ExitCode := 1;
Exit;
end;

lpvMem := MapViewOfFile(
hFileMappingObject, // object to map view of
FILE_MAP_WRITE, // read/write access
0, // high offset: map from
0, // low offset: beginning
0 // default: map entire file
);

if lpvMem = nil then
begin
CloseHandle(hFileMappingObject);
ExitCode := 1;
Exit;
end;

end.

unit KeyboardHook;

interface

uses Windows;

var
hCurrentHook: HHOOK;

function KeyboardProc(hCode: Integer; vkCode: WPARAM; ksMsgInf: LPARAM): LRESULT; stdcall;

implementation

uses Messages;

procedure SetKeyState(Key: Integer);
var
KeyBoardState : TKeyboardState;
begin
GetKeyBoardState(KeyBoardState);
if ByteBool(GetKeyState(Key) and 1) then
begin
keybd_event(Key, Lo(MapVirtualKey(Key, 0)), 0, 0);
keybd_event(Key, Lo(MapVirtualKey(Key, 0)), KEYEVENTF_KEYUP, 0);
end;
end;


function KeyboardProc(hCode: Integer; vkCode: WPARAM; ksMsgInf: LPARAM): LRESULT;
begin
Result := 0;
if vkCode <> VK_SCROLL then
begin
Result := CallNextHookEx(hCurrentHook, hCode, vkCode, ksMsgInf);
end
else
begin
SetKeyState(VK_SCROLL);
end;
end;

end.

---------------------
EXE
---------------------

program KbdHook;
uses
Windows,
Dialogs;

var
hinstDLL: HINST;
hkprcKeyboard: TFNHookProc;
msg: TMsg;

begin
hinstDLL := LoadLibrary("HookAgnt.dll");
hkprcKeyboard := GetProcAddress(hinstDLL, "KeyboardProc");
SetWindowsHookEx(WH_KEYBOARD, hkprcKeyboard, hinstDLL, 0);
repeat until not GetMessage(msg, 0, 0, 0);
end.

---------------------



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

Текущий архив: 2003.03.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-63941
ki11er
2003-03-03 16:44
2003.03.20
Одновременные запросы (BDE)...


6-64257
Сергей
2003-01-30 16:49
2003.03.20
Исключительные ситуации при работе с NMHTTP


8-64228
Eugenex
2002-12-05 11:56
2003.03.20
Стеганографирую


14-64361
Vint
2003-03-05 11:12
2003.03.20
Тату ваще офигели!


3-64048
Виталий Панасенко
2003-03-01 15:41
2003.03.20
TTable