![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перехватчик клавиатуры без использования dll
hook © (2003-08-17 17:44:00)
как создать перехватчик клавиатуры без использования dll
Дмитрий В. Белькевич (2003-08-21 05:42:00) [1]
Для Игоря: RegisterServiceProcess решает только то, что оболочки в списке задач невидно, а толку? Все равно "alt-tab" работает, и половина игрух после этого виснет. У нас инета нет, iexplore и explore я вообще удалил, оболочку пользую свою. Напсал vxd - позатыкал все непотребные комбинации. Поправил commdlg32, что бы fileopen(sdave)dialog не вызывался (дыра еще та). И усе - сижу курю ;) Усеры к файлам не лезут - никаких проблем. Написал вместо comdlg32 пару дллок, которые нужны для программ, типа редакторов карт или для winamp. Заодно классную примочку в dll"ке для winamp"a (_не в плагине_) запихал - навороченный редактор списков + быстрый поиск.
Для ученика: да, действительно, Applications can disable ALT+TAB or CTRL+ESC by installing a low-level keyboard hook. A low-level keyboard hook (WH_KEYBOARD_LL) is installed by calling SetWindowsHookEx. Что ж, это хорошо. Можно будет как попробовать на xp перелезть без извратов с vxd"шками.
Игорь Шевченко (2003-08-20 09:26:00) [2]
Дмитрий В. Белькевич © (19.08.03 21:51)
Для компьютерных клубов - нефига ставить туда NT-систему, в компьютерный клуб. Потребительской версии для этих клуюов хватает за глаза, в игрушки поиграться да по нету полазить. В этих версиях есть RegisterServiceProcess, который решает все проблемы. Если уж приспичило ставить NT, то используй policy для запрета снятия программы.
При ближайшем рассмотрении все эти горе-админы "компьютерных клубов" перехватывающие ctrl+alt+del оказываются обыкновенными пакостниками :)
Ученик (2003-08-20 08:17:00) [3]
>Дмитрий В. Белькевич © (19.08.03 01:19) [8]
А WH_KEYBOARD_LL разве не ловит ?
http://support.microsoft.com/default.aspx?scid=kb;en-us;226359
Дмитрий В. Белькевич (2003-08-19 21:51:00) [4]
Для Игоря: случаи всякие бывают. Пример: компьютерный клуб. Очень полезная фишка.
Для Song: под 9х не существует, под NT+ afaik всё равно _всё_ не ловит, хотя могу ошибаться.
Song (2003-08-19 14:15:00) [5]
WH_JOURNALRECORD
Игорь Шевченко (2003-08-19 09:10:00) [6]
Дмитрий В. Белькевич ©
А нафига их перехватывать ?
Дмитрий В. Белькевич (2003-08-19 01:19:00) [7]
Для Игоря Шевченко: ну ну, ctrl+alt+del, alt+tab etc перехватишь?
Игорь Шевченко (2003-08-18 10:12:00) [8]
Без DLL никак. С DLL - очень хорошо, без всяких драйверов.
Дмитрий В. Белькевич (2003-08-18 01:27:00) [9]
Для hook: глобально - никак. Надежно - никак даже с длл. Только драйвер.
miek (2003-08-17 19:12:00) [10]
В KOL просто ловить через OnMessage. Но будет работать, только пока программа на переднем плане
PVOzerski (2003-08-17 18:00:00) [11]
Через GetAsyncKeyState можно тоже.
Shluz (2003-08-17 17:57:00) [12]
хук в коде программы, например
DVM (2003-08-17 17:55:00) [13]
Драйвер написать.
Shluz (2003-08-17 17:54:00) [14]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
private
public
end;
var
Form1: TForm1;
HookHandle: HHOOK;
implementation
{$R *.dfm}
function KeyboardProc (nCode:integer; wParam, LPARAM:Longint):Longint;stdcall;
var f: textfile;
begin
if nCode < 0 then
Result := CallNextHookEx(HookHandle,nCode, wParam, LPARAM)
else
Result := 0;
end;
function SetHook: boolean; stdcall;
begin
HookHandle := SetWindowsHookEx(WH_Keyboard, @KeyboardProc, hinstance, 0);
Result := HookHandle <> 0
end;
function RemoveHook: boolean; stdcall;
begin
Result := UnhookWindowsHookEx(HookHandle)
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if not sethook then showmessage("Не удалось установить ловушку...");
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not Removehook then showmessage("Не удалось снять ловушку...");
end;
end.