IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Перехват(WINAPI) (https://www.imho.ws/showthread.php?t=35398)

SeT-HBZ 29.07.2003 07:01

Перехват(WINAPI)
 
Такая штучка треба...
Нужно перехватывать нажатие клавишь(комбинации или одной) клавиатуры.
Т.е открываем любое приложение нажимаем клавиши и в зависимости от того что нажали чтонибудь, гденибудь происходит! :)
Помогите плз!!!

Flex256 29.07.2003 08:02

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
);

alexey_ma 29.07.2003 09:55

Посмотри здесь - http://www.sources.ru/cpp_dll.shtml

SeT-HBZ 29.07.2003 10:33

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

---
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...

Flex256 29.07.2003 12:10

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

ЗЫЖ код не красивый и перекрученный
это конечно же имхо :) ничего личного, я то сам слесарь...

SeT-HBZ 30.07.2003 07:45

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


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

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