Интернет-казино Grand Casino произвело фурор в игорном мире.
Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее.
Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.
Существуют приложения, которым необходимо перехватывать все нажатия клавиш в windows, даже если в данный момент активно другое приложение. Это может быть, например, программа, переключающая раскладку клавиатуры, резидентный словарь или программа, выполняющая иные действия по нажатию "горячей" комбинации клавиш.
Перехват всех событий в windows (в том числе и событий от клавиатуры) выполняется с помощью вызова функции setwindowshook(). Данная функция регистрирует в системе windows ловушку (hook) для определенного типа событий/сообщений. Ловушка - это пользовательская процедура, которая будет обрабатывать указанное событие.
Основное здесь то, что эта процедура должна всегда присутствовать в памяти windows. Поэтому ловушку помещают в dll и загружают эту dll из программы. Пока хоть одна программа использует dll, та не может быть выгружена из памяти. Приведем пример такой dll и программы, ее использующей. В примере ловушка перехватывает нажатие клавиш на клавиатуре, проверяет их и, если это клавиши "+" или "-", посылает соответствующее сообщение в конкретное приложение (окно). Окно ищется по имени его класса ("t form1") и заголовку (caption, "xxx").
{текст библиотеки}
library s endkey;
uses
wintypes, winprocs, messages;
const
{пользовательские сообщения}
wm_nextshow_event = wm_user + 133;
wm_prevshow_event = wm_user + 134;
{handle для ловушки}
hookhandle: hhook = 0;
var
saveexitproc : pointer;
{собственно ловушка}
function key_hook(code: integer; wparam: word; lparam: longint): longint; export;
var
h: hwnd;
begin
{если code>=0, то ловушка может обработать событие}
if code >= 0 then
begin
{это те клавиши?}
if ((wparam = vk_add)or(wparam = vk_subtract)) and
(lparam and $40000000 = 0) then
begin
{ищем окно по имени класса и по заголовку}
h := findwindow('t form1', 'xxx');
{посылаем сообщение}
if wparam = vk_add then
s endmessage(h, wm_nextshow_event, 0, 0)
else
s endmessage(h, wm_prevshow_event, 0, 0);
end;
{если 0, то система должна дальше обработать это событие}
{если 1 - нет}
result:=0;
end
else
{если code<0, то нужно вызвать следующую ловушку}
result := callnexthookex(hookhandle,code, wparam, lparam);
function key_hook : longint; far; external 's endkey';
procedure t form1.wm_nextmsg ( var m : tmessage);
begin
label1.caption:='next message';
end;
procedure t form1.wm_prevmsg ( var m : tmessage);
begin
label1.caption:='previous message';
end;
procedure t form1. formcreate(s ender: tobject);
begin
{если не использовать вызов процедуры из dll в программе,
то компилятор удалит загрузку dll из программы}
p:=@key_hook;
end;
end.
Конечно, свойство caption в этой форме должно быть установлено в "xxx".
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Вы читаете: Статьи » ОС » Windows » Перехват нажатия клавиши в Windows