Global shortcut key
4 отговора
115 прегледа
Global shortcut key
Интересува ме как да направя така, че при някаква клавишна комбинация програмата ми да извърши някакво действие, без значение дали програмата е активна или не. Примерно програмката ми седи заредена във Систъм-Трейа, и при някаква клавинша комбинация...вади съобщение примерно :)
Имам компонент за това чудо, но се стремя да правя това което ми трябва без да ползвам допълнителни компоненти...
Благодаря предварително
Имам компонент за това чудо, но се стремя да правя това което ми трябва без да ползвам допълнителни компоненти...
Благодаря предварително
Един Виц
Ако в пустинята има лъв, който трябва да бъде хванат в клетка един програмист на Pascal ще организира двоично търсене и ще го хване в клетка.
Един програмист на C ще вземе един камък, ще му придаде стойност Лъв и ще го хвърли в клетката.
Програмист на C++ така ще предифинира конструктурите на сЛъв и сКлетка, че като се създава клетка, винаги ще се създава лъв в нея, и ако се създава лъв винаги ще има клетка около него.
Един програмист на Delphi ще влезе в интернет и ще си изтегли компонент за хващане на лъв в клетка
SysAdmin ще си окопае ров около себе си и ще каже, че не го е страх от лъвове, а един спамер ще нахвърля клетки из цялата пустиня и ще напише: "Ако сте лъв, моля влезте тук."
Та поуката беше "що да го пишеш, като си имаш компонент?
"
-------------
Special killer double trouble triple extra nicotine monster!
Един програмист на C ще вземе един камък, ще му придаде стойност Лъв и ще го хвърли в клетката.
Програмист на C++ така ще предифинира конструктурите на сЛъв и сКлетка, че като се създава клетка, винаги ще се създава лъв в нея, и ако се създава лъв винаги ще има клетка около него.
Един програмист на Delphi ще влезе в интернет и ще си изтегли компонент за хващане на лъв в клетка
SysAdmin ще си окопае ров около себе си и ще каже, че не го е страх от лъвове, а един спамер ще нахвърля клетки из цялата пустиня и ще напише: "Ако сте лъв, моля влезте тук."
Та поуката беше "що да го пишеш, като си имаш компонент?
-------------
Special killer double trouble triple extra nicotine monster!
Re: Един Виц
Администратор: Изкопава около клетката ров, запълва го с концентрирана киселина, Слага по брега мини и противотанкови заграждения, всичко това омотава с бодлива тел. Пуска по телта високо напрежение от трикратно резервиран генератор. Слага на клетката 10 кодови брави и 12 катинара. Влиза вътре, заключва всичко, пуска тока гълта ключовете, забравя кодовете и казва, че сега никакви лъвове не го плашат.
Хакер: Неутрализира киселината с основа, заземява и прегризва бодливата тел, минава под загражденията, прескача с кокили мините, разбива всички ключалки и влиза в клетката. Не намира вътре лъв, псува стрaшно, рита администратора по задника и си отива обратно в пустинята.
---т'ва е фулл версията----
И все пак ? Не може да няма лек за проблема ми :)
Хакер: Неутрализира киселината с основа, заземява и прегризва бодливата тел, минава под загражденията, прескача с кокили мините, разбива всички ключалки и влиза в клетката. Не намира вътре лъв, псува стрaшно, рита администратора по задника и си отива обратно в пустинята.
---т'ва е фулл версията----
И все пак ? Не може да няма лек за проблема ми :)
Re: Global shortcut key
if RegisterHotKey(Self.Handle, 100, 0, VK_F10) = False then
begin
MessageBox(Self.Handle,
PChar('Error to create hotkey F10,please change hotkey ! '),
PChar('Ala bala'), MB_OK + MB_ICONERROR);
end;
//-------------------------------------------------------------------------------------
RegisterHotKey
The RegisterHotKey function defines a system-wide hot key.
BOOL RegisterHotKey(
HWND hWnd, // handle to window
int id, // hot key identifier
UINT fsModifiers, // key-modifier options
UINT vk // virtual-key code
);
Parameters
hWnd
[in] Handle to the window that will receive WM_HOTKEY messages generated by the hot key. If this parameter is NULL, WM_HOTKEY messages are posted to the message queue of the calling thread and must be processed in the message loop.
id
[in] Specifies the identifier of the hot key. No other hot key in the calling thread should have the same identifier. An application must specify a value in the range 0x0000 through 0xBFFF. A shared dynamic-link library (DLL) must specify a value in the range 0xC000 through 0xFFFF (the range returned by the GlobalAddAtom function). To avoid conflicts with hot-key identifiers defined by other shared DLLs, a DLL should use the GlobalAddAtom function to obtain the hot-key identifier.
fsModifiers
[in] Specifies keys that must be pressed in combination with the key specified by the nVirtKey parameter in order to generate the WM_HOTKEY message. The fsModifiers parameter can be a combination of the following values. Value Meaning
MOD_ALT Either ALT key must be held down.
MOD_CONTROL Either CTRL key must be held down.
MOD_SHIFT Either SHIFT key must be held down.
MOD_WIN Either WINDOWS key was held down. These keys are labeled with the Microsoft Windows logo.
vk
[in] Specifies the virtual-key code of the hot key.
//-------------------------------------------------------------------------------------
Правиш си една процедура:
procedure Get_WM_HOTKEY(var MSG: TMessage);message WM_HOTKEY;
да си прихващаш клавишната комбинация.
begin
MessageBox(Self.Handle,
PChar('Error to create hotkey F10,please change hotkey ! '),
PChar('Ala bala'), MB_OK + MB_ICONERROR);
end;
//-------------------------------------------------------------------------------------
RegisterHotKey
The RegisterHotKey function defines a system-wide hot key.
BOOL RegisterHotKey(
HWND hWnd, // handle to window
int id, // hot key identifier
UINT fsModifiers, // key-modifier options
UINT vk // virtual-key code
);
Parameters
hWnd
[in] Handle to the window that will receive WM_HOTKEY messages generated by the hot key. If this parameter is NULL, WM_HOTKEY messages are posted to the message queue of the calling thread and must be processed in the message loop.
id
[in] Specifies the identifier of the hot key. No other hot key in the calling thread should have the same identifier. An application must specify a value in the range 0x0000 through 0xBFFF. A shared dynamic-link library (DLL) must specify a value in the range 0xC000 through 0xFFFF (the range returned by the GlobalAddAtom function). To avoid conflicts with hot-key identifiers defined by other shared DLLs, a DLL should use the GlobalAddAtom function to obtain the hot-key identifier.
fsModifiers
[in] Specifies keys that must be pressed in combination with the key specified by the nVirtKey parameter in order to generate the WM_HOTKEY message. The fsModifiers parameter can be a combination of the following values. Value Meaning
MOD_ALT Either ALT key must be held down.
MOD_CONTROL Either CTRL key must be held down.
MOD_SHIFT Either SHIFT key must be held down.
MOD_WIN Either WINDOWS key was held down. These keys are labeled with the Microsoft Windows logo.
vk
[in] Specifies the virtual-key code of the hot key.
//-------------------------------------------------------------------------------------
Правиш си една процедура:
procedure Get_WM_HOTKEY(var MSG: TMessage);message WM_HOTKEY;
да си прихващаш клавишната комбинация.