imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 29.07.2003, 07:01     # 1
SeT-HBZ
Guest
 
Сообщения: n/a

Question Перехват(WINAPI)

Такая штучка треба...
Нужно перехватывать нажатие клавишь(комбинации или одной) клавиатуры.
Т.е открываем любое приложение нажимаем клавиши и в зависимости от того что нажали чтонибудь, гденибудь происходит!
Помогите плз!!!
 
Старый 29.07.2003, 08:02     # 2
Flex256
Guest
 
Сообщения: n/a

HHOOK SetWindowsHookEx(
int idHook, // type of hook to install
HOOKPROC hkprc, // address of hook procedure
HINSTANCE hMod, // handle of application instance
DWORD dwThreadID // identity of thread to install hook for
);
 
Старый 29.07.2003, 09:55     # 3
alexey_ma
Member
 
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245

alexey_ma Нимб уже пробиваетсяalexey_ma Нимб уже пробивается
Посмотри здесь - http://www.sources.ru/cpp_dll.shtml
__________________
Best Regards
alexey_ma вне форума  
Старый 29.07.2003, 10:33     # 4
SeT-HBZ
Guest
 
Сообщения: n/a

Может быть тогда поможете разобрать что этот кусок кода делает???

---
RegisterHotKey(0, 356, Mod_Shift, VK_Space);
RegisterHotKey(0, 358, Mod_Control, VK_End);
Name := ParamStr(1);
if ParamStr(2) <> '' then Name := Name +' ' + ParamStr(2);
if ParamStr(3) <> '' then Name := Name +' ' + ParamStr(3);
if Name = '' then Name := 'Blablabla';
repeat
WaitMessage;
GetMessage(HotKey, 0, WM_HotKey, WM_HotKey);
if HotKey.WParam = 356 then
begin
Handle := FindWindow(nil, PChar(Name));
if Hidden then
begin
Enabled := True;
EnableWindow(Handle, Enabled);
ShowWindow(Handle, SW_Restore);
SetForegroundWindow(Handle);
Hidden := False;
end
else
begin
Enabled := False;
SetForegroundWindow(GetNextWindow(Handle, GW_HWNDPREV));
EnableWindow(Handle, Enabled);
ShowWindow(Handle, SW_Hide);
Hidden := True;
end;
end;
until HotKey.WParam = 358;

EnableWindow(Handle, True);
ShowWindow(Handle, SW_Restore);
SetForegroundWindow(Handle);

---
Хотя бы в общих чертах... как работает REGISTERHOTKEY...
 
Старый 29.07.2003, 12:10     # 5
Flex256
Guest
 
Сообщения: n/a

Нуууу... глядя чуть трезвым левым глазом... можно предположить примерно следующее :
1. регистрируются две горячие клавиши (shift+space и ctrl+end)
2. из командной строки высасывается название окна
3. цикл в котором ждем жмапанья на зарегистрированные горячие клавиши
если надавили ctrl+end - выход из цикла и восстановление окна
если давим shift+space - прячем или показываем окно, которое было указано в командной строке (все зависит от предыдущего состояния окна).

ЗЫЖ код не красивый и перекрученный
это конечно же имхо ничего личного, я то сам слесарь...
 
Старый 30.07.2003, 07:45     # 6
SeT-HBZ
Guest
 
Сообщения: n/a

Без б код хреновастый... но не все ли нам программерам равно если он работает!!! ??? ))
Спасиб за подсказку!
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 23:32.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.