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

Вниз

Вроде 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-36752
Blamyr
2003-12-01 23:24
2003.12.12
Как поймать нажатие кнопки Tab


1-36646
azazello
2003-11-30 00:16
2003.12.12
Как добавить фоновый рисунок в TRichEdit?


1-36701
Ил_204
2003-12-02 16:39
2003.12.12
окно Messages


7-36870
Alibaba
2003-08-20 18:39
2003.12.12
TThread


3-36562
velial
2003-11-20 16:56
2003.12.12
множественный SELECT





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