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

Вниз

Перехват лампочки 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
1-64198
Zirus
2003-03-08 13:11
2003.03.20
Как можно активизировать свёрнутую форму?


1-64171
VitGun
2003-03-07 18:51
2003.03.20
График в TChart


7-64412
Song
2003-01-25 17:23
2003.03.20
Как прочитать текстовый файл быстрей чем Reset() .. ReadLn() ?


3-63937
anton2v
2003-02-27 11:46
2003.03.20
ADO -> VFoxPro -> ??? Numeric(x,y) ???


14-64347
Sasha000
2003-03-05 09:43
2003.03.20
Подскажите где моно взять продвинутый StringGrid, токо бесплатный





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