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

Вниз

Вроде HotKey, а вроде и нет...   Найти похожие ветки 

 
novenkiy   (2003-10-09 15:25) [0]

Приветствую всех!

Я натолкнулся на следующую проблемму у меня не срабатывает HotKey он должен быть глобальным и срабатывать в любом приложении. Подскажите что не так
вот мой код:
library libhot;

uses
Windows, Messages;
var
H : THandle;
a, :integer;

Function WindowProc(h, uMsg, wParam, lParam: Integer): Integer; Stdcall; Export;

Begin
Result := 0;
case uMsg of
wm_hotkey:
begin
if wParam=a then
begin
keybd_event( VK_NUMPAD0, MapVirtualKey(Vk_NumPad0,0), 0, 0 );
keybd_event( VK_NUMPAD0, MapVirtualKey(Vk_NumPad0,0), KEYEVENTF_KEYUP, 0 );
end;

end;
end;
begin
Result:=DefWindowProc(h,umsg,wParam,lParam);
exit;
end;

Result:=DefWindowProc(h,umsg,wParam,lParam);
end;

procedure sethookhot;
begin
a := GlobalAddAtom("Hot1");
RegisterHotKey(H, a, MOD_Alt, 82);

H:= SetWindowsHookEx(WH_keyboard, @WindowProc, hInstance, 0);
if H = 0 then
messageBox(0,"


 
RustiK ©   (2003-10-09 15:55) [1]

Ни кто не хочет помочь?


 
Songoku ©   (2003-10-09 16:12) [2]

А чему равно а ????
Если ты хочешь отследить HotKey то для этого используй WM_HOTKEY!!!


 
novenkiy   (2003-10-10 07:50) [3]

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


 
novenkiy   (2003-10-10 14:01) [4]

так никто и не хочет помочь :-(((((((((((


 
Ixion ©   (2003-10-10 15:48) [5]

А ты хоть понял, что написал ? :))
Зачем тебе вообще Hook ? Если используешь WM_HOTKEY то создавать надо окно, оконная функция которого и будет ловить это самое сообщение.


 
novenkiy   (2003-10-13 11:28) [6]

Я знаю, что я пишу. Мне нужно чтобы в любом приложении где бы я не нажал Alt+R печатался ноль, вот и все а у меня HotKey не срабатывает...
Почему?


 
Ixion ©   (2003-10-13 23:24) [7]


> Я знаю, что я пишу. Мне нужно чтобы в любом приложении где
> бы я не нажал Alt+R печатался ноль, вот и все а у меня HotKey
> не срабатывает...
> Почему?

Потому что ты все-же НЕ знаешь, что пишешь. Выбери что-нибудь одно - либо хуки, тогда HotKey тебе не нужен, либо HotKey - тогда тебе не нужны хуки. Судя по коду для тебя будет проще испрользовать HotKey. Для его использования НЕ НУЖНО никаких DLL и SetWindowsHookEx. Достаточно создать форму, в описании которой указать:

TForm1 = class(TForm)
...
procedure WMHotKey(var Message: TWMHotKey) message WM_HOTKEY;
...
end;

...

procedure TForm1.WMHotKey(var Message: TWMHotKey);
begin
if Message.HotKey = a then
begin
keybd_event( VK_NUMPAD0, MapVirtualKey(Vk_NumPad0,0), 0, 0 );
keybd_event( VK_NUMPAD0, MapVirtualKey(Vk_NumPad0,0), KEYEVENTF_KEYUP, 0 );
end;
end;


затем при запуске программы вызвать
RegisterHotKey(Form1.Handle, a, MOD_Alt, 82);

И все. Ну а если душа просит это все сделать на чистом WinAPI, то исходя из приведенного тобой кода, я бы посоветовал тебе сначала прочитать хорошую книгу по Windows программированию.


 
novenkiy   (2003-10-14 08:24) [8]


> HotKey тебе не нужен, либо HotKey - тогда тебе не нужны
> хуки

Дело в том что я поставил хук на нажатие Alt+R например, и вот нажимаю я значить эту комбинацию. Потом срабатывает хук и выводится символ, который я заранее определил. Но, есть одно но. В том приложении где я нажал Alt+R, может стоять таже самая комбинация на HotKey самого приложения. Получается я хук поставил и он сработал и одновременно сработал HotKey того приложения с которым я работаю.


 
novenkiy   (2003-10-14 08:28) [9]

а если я посталю просто HotKey тогда он у меня результат будет срабатывать только в своем приложении. Хотя ловится будет глобально


 
novenkiy   (2003-10-16 10:00) [10]

Удалено модератором
Примечание: Offtopic



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
3-36530
Mic_2000
2003-11-18 00:39
2003.12.12
Динамические колонки в хранимых процедурах на IB7.1


14-36836
Igor_thief
2003-11-14 16:30
2003.12.12
Курсовой


1-36631
DimaK
2003-12-01 12:00
2003.12.12
RichEdit


4-36905
Duncann
2003-10-21 11:57
2003.12.12
Как правильно передать параметры в функцию длл?


1-36677
McSimm2
2003-12-02 16:50
2003.12.12
представление числа в виде строки