Global shortcut key

4 отговора 115 прегледа
#1

Global shortcut key

Интересува ме как да направя така, че при някаква клавишна комбинация програмата ми да извърши някакво действие, без значение дали програмата е активна или не. Примерно програмката ми седи заредена във Систъм-Трейа, и при някаква клавинша комбинация...вади съобщение примерно :)
Имам компонент за това чудо, но се стремя да правя това което ми трябва без да ползвам допълнителни компоненти...
Благодаря предварително

Отговор
в отговор на ShaDoW #2

Един Виц

Ако в пустинята има лъв, който трябва да бъде хванат в клетка един програмист на Pascal ще организира двоично търсене и ще го хване в клетка.
Един програмист на C ще вземе един камък, ще му придаде стойност Лъв и ще го хвърли в клетката.
Програмист на C++ така ще предифинира конструктурите на сЛъв и сКлетка, че като се създава клетка, винаги ще се създава лъв в нея, и ако се създава лъв винаги ще има клетка около него.
Един програмист на Delphi ще влезе в интернет и ще си изтегли компонент за хващане на лъв в клетка
SysAdmin ще си окопае ров около себе си и ще каже, че не го е страх от лъвове, а един спамер ще нахвърля клетки из цялата пустиня и ще напише: "Ако сте лъв, моля влезте тук."

Та поуката беше "що да го пишеш, като си имаш компонент? "

-------------
Special killer double trouble triple extra nicotine monster!
Отговор
в отговор на z_free #3

Re: Един Виц

Администратор: Изкопава около клетката ров, запълва го с концентрирана киселина, Слага по брега мини и противотанкови заграждения, всичко това омотава с бодлива тел. Пуска по телта високо напрежение от трикратно резервиран генератор. Слага на клетката 10 кодови брави и 12 катинара. Влиза вътре, заключва всичко, пуска тока гълта ключовете, забравя кодовете и казва, че сега никакви лъвове не го плашат.

Хакер: Неутрализира киселината с основа, заземява и прегризва бодливата тел, минава под загражденията, прескача с кокили мините, разбива всички ключалки и влиза в клетката. Не намира вътре лъв, псува стрaшно, рита администратора по задника и си отива обратно в пустинята.
---т'ва е фулл версията----
И все пак ? Не може да няма лек за проблема ми :)

Отговор
в отговор на ShaDoW #4

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;

да си прихващаш клавишната комбинация.

Отговор
в отговор на Ptr #5

Re: Global shortcut key

It looks really nice. tnx Ptr

Отговор