Здравствуйте, __max, Вы писали:
__>>>The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
__>>>API одинаковое, те же я#ц@ — вид сбоку! __>>>Но я бы предпочел DLL...
_M_>>для C# очень удобно и красиво, т.к. код может находится непосредственно в приложении, т.е. DLL не нужна
__>Может и красиво, но неудобно... __>Описания структур, количество импортируемых функций... __>проще все внутрь dll на плюсах завернуть...
ерунда какая-то, импортировать нужно всего 4 функции
никакие структуры описывать не нужно, весь код займет 10-20 строк...
Всем привет!
Вот собственно вопрос: как создать hotkey для проги? чтобы по нажатию вызывать...(в Win)
Если тема всплывала, извиняюсь,
где поискать код мона?
05.05.07 23:51: Перенесено модератором из '.NET' — AndrewVK
Здравствуйте, sgb, Вы писали:
sgb>Всем привет! sgb>Вот собственно вопрос: как создать hotkey для проги? чтобы по нажатию вызывать...(в Win) sgb>Если тема всплывала, извиняюсь, sgb>где поискать код мона?
Здравствуйте, MAPCUAHUH, Вы писали:
MAP>RightClick->properties?( по ярлыку)
а по подробней?
Re[3]: [C#]как вызвать программу с клавиатуры?
От:
Аноним
Дата:
02.05.07 21:29
Оценка:
Здравствуйте, sgb, Вы писали:
sgb>Здравствуйте, MAPCUAHUH, Вы писали:
MAP>>RightClick->properties?( по ярлыку)
sgb> а по подробней?
Горячая клавиша — это свойство ярлыка виндовс. НИКАК не относящееся к тому на чем писали программу. Ярлык (это такая штучка, они зранятся с меню пуск и на рабочем столе и еще много где)... кликни правой кнопочкой на ЛЮБОМ стандартном элементе меню пуск... Там найди "Быстрый вызов", там стоя на нем нажми Ctrl+Shift+p и увидишь как именно это сочетание назначится как хоткей... Ну а если ты еще догадаешся поменять сочетание — то придет тебе счастье.
PS: Сори что так злобно...
Re[4]: [C#]как вызвать программу с клавиатуры?
От:
Аноним
Дата:
03.05.07 05:03
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, sgb, Вы писали:
sgb>>Здравствуйте, MAPCUAHUH, Вы писали:
MAP>>>RightClick->properties?( по ярлыку)
sgb>> а по подробней?
А>Горячая клавиша — это свойство ярлыка виндовс. НИКАК не относящееся к тому на чем писали программу. Ярлык (это такая штучка, они зранятся с меню пуск и на рабочем столе и еще много где)... кликни правой кнопочкой на ЛЮБОМ стандартном элементе меню пуск... Там найди "Быстрый вызов", там стоя на нем нажми Ctrl+Shift+p и увидишь как именно это сочетание назначится как хоткей... Ну а если ты еще догадаешся поменять сочетание — то придет тебе счастье.
А>PS: Сори что так злобно...
Уточнение.
Такой метод работает только если ярлык находиться на десктопе. Да и ещё там нету сочетания с Win.
А>Уточнение. А>Такой метод работает только если ярлык находиться на десктопе.
Враки. У меня работает из Start-меню.
А>Да и ещё там нету сочетания с Win.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, sgb, Вы писали:
sgb>>Здравствуйте, MAPCUAHUH, Вы писали:
MAP>>>RightClick->properties?( по ярлыку)
sgb>> а по подробней?
А>Горячая клавиша — это свойство ярлыка виндовс. НИКАК не относящееся к тому на чем писали программу. Ярлык (это такая штучка, они зранятся с меню пуск и на рабочем столе и еще много где)... кликни правой кнопочкой на ЛЮБОМ стандартном элементе меню пуск... Там найди "Быстрый вызов", там стоя на нем нажми Ctrl+Shift+p и увидишь как именно это сочетание назначится как хоткей... Ну а если ты еще догадаешся поменять сочетание — то придет тебе счастье.
А>PS: Сори что так злобно...
Ну и как ты запустишь прогу скажем по SHIFT+два_раза_клавиша_правый_плюс???
Если универсальный метод нужен (кроме CTRL+ALT+DEL), то только HOOK DLL (См. MSDN)
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, sgb, Вы писали:
sgb>>Здравствуйте, MAPCUAHUH, Вы писали:
MAP>>>RightClick->properties?( по ярлыку)
sgb>> а по подробней?
А>Горячая клавиша — это свойство ярлыка виндовс. НИКАК не относящееся к тому на чем писали программу. Ярлык (это такая штучка, они зранятся с меню пуск и на рабочем столе и еще много где)... кликни правой кнопочкой на ЛЮБОМ стандартном элементе меню пуск... Там найди "Быстрый вызов", там стоя на нем нажми Ctrl+Shift+p и увидишь как именно это сочетание назначится как хоткей... Ну а если ты еще догадаешся поменять сочетание — то придет тебе счастье.
А>PS: Сори что так злобно... да ничего — только с помощью ярлыка, это не программная реализация — это должен юзер делать, а не все знают...я же спрашиваю, как при установке или при запуске проги — зарегить в системе хоткей? без всяких ярлыков и пропертиз
Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, __max, Вы писали:
__>>Если универсальный метод нужен (кроме CTRL+ALT+DEL), то только HOOK DLL (См. MSDN)
_M_>не обязательно, достаточно LOW LEVEL KEYBOARD HOOK, без DLL — красиво и удобно
то есть это API надо трогать? я подумал — может в реестре мона чего-нибудь замутить: зарегить прогу и какой-нить для ключ с информацией о клавише
Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, __max, Вы писали:
__>>Если универсальный метод нужен (кроме CTRL+ALT+DEL), то только HOOK DLL (См. MSDN)
_M_>не обязательно, достаточно LOW LEVEL KEYBOARD HOOK, без DLL — красиво и удобно
The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
API одинаковое, те же я#ц@ — вид сбоку!
Но я бы предпочел DLL...
Здравствуйте, __max, Вы писали:
__>>>Если универсальный метод нужен (кроме CTRL+ALT+DEL), то только HOOK DLL (См. MSDN)
_M_>>не обязательно, достаточно LOW LEVEL KEYBOARD HOOK, без DLL — красиво и удобно
__>The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
__>API одинаковое, те же я#ц@ — вид сбоку! __>Но я бы предпочел DLL...
для C# очень удобно и красиво, т.к. код может находится непосредственно в приложении, т.е. DLL не нужна
Здравствуйте, sgb, Вы писали:
MAP>>>>RightClick->properties?( по ярлыку)
sgb>>> а по подробней?
А>>Горячая клавиша — это свойство ярлыка виндовс. НИКАК не относящееся к тому на чем писали программу. Ярлык (это такая штучка, они зранятся с меню пуск и на рабочем столе и еще много где)... кликни правой кнопочкой на ЛЮБОМ стандартном элементе меню пуск... Там найди "Быстрый вызов", там стоя на нем нажми Ctrl+Shift+p и увидишь как именно это сочетание назначится как хоткей... Ну а если ты еще догадаешся поменять сочетание — то придет тебе счастье.
А>>PS: Сори что так злобно... sgb> да ничего — только с помощью ярлыка, это не программная реализация — это должен юзер делать, а не все знают...я же спрашиваю, как при установке или при запуске проги — зарегить в системе хоткей? без всяких ярлыков и пропертиз
втихаря вписать hidden app в укромное место реестра, которая будет слушать кнопки и при нажатии нужных запускать нужное приложение
Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, __max, Вы писали:
__>>>>Если универсальный метод нужен (кроме CTRL+ALT+DEL), то только HOOK DLL (См. MSDN)
_M_>>>не обязательно, достаточно LOW LEVEL KEYBOARD HOOK, без DLL — красиво и удобно
__>>The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
__>>API одинаковое, те же я#ц@ — вид сбоку! __>>Но я бы предпочел DLL...
_M_>для C# очень удобно и красиво, т.к. код может находится непосредственно в приложении, т.е. DLL не нужна
Может и красиво, но неудобно...
Описания структур, количество импортируемых функций...
проще все внутрь dll на плюсах завернуть...
Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, __max, Вы писали:
__>>>>The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
__>>>>API одинаковое, те же я#ц@ — вид сбоку! __>>>>Но я бы предпочел DLL...
_M_>>>для C# очень удобно и красиво, т.к. код может находится непосредственно в приложении, т.е. DLL не нужна
__>>Может и красиво, но неудобно... __>>Описания структур, количество импортируемых функций... __>>проще все внутрь dll на плюсах завернуть...
_M_>ерунда какая-то, импортировать нужно всего 4 функции
_M_>никакие структуры описывать не нужно, весь код займет 10-20 строк...
Не будем спорить, мне вот это допустим не нравится делать...
private const int WH_KEYBOARD_LL = 13;
private const int WM_KEYDOWN = 0x0100;
Я так понял это из хидера?
Мне проще было бы на плюсах DLL (вообще я из плюсов и пришел)
И тогда все просто — всего две функции:
HookHotkey(hotKey, callbackFunc);
UnhookHotkey(hotKey);
Вообщем спорить не буду...
Согласен удобно то, что не надо тягать за собой DLL и зависить от ++ кода,
неудобно реализовывать класс который ставит хуки... ну да ладно каждому свое.
Здравствуйте, __max, Вы писали:
__>Здравствуйте, _Morpheus_, Вы писали:
_M_>>Здравствуйте, __max, Вы писали:
__>>>>>The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
__>>>>>API одинаковое, те же я#ц@ — вид сбоку! __>>>>>Но я бы предпочел DLL...
_M_>>>>для C# очень удобно и красиво, т.к. код может находится непосредственно в приложении, т.е. DLL не нужна
__>>>Может и красиво, но неудобно... __>>>Описания структур, количество импортируемых функций... __>>>проще все внутрь dll на плюсах завернуть...
_M_>>ерунда какая-то, импортировать нужно всего 4 функции
_M_>>никакие структуры описывать не нужно, весь код займет 10-20 строк...
__>Не будем спорить, мне вот это допустим не нравится делать...
__> private const int WH_KEYBOARD_LL = 13; __> private const int WM_KEYDOWN = 0x0100;
__>Я так понял это из хидера?
да. И что? две константы это очень плохо?
__>Мне проще было бы на плюсах DLL (вообще я из плюсов и пришел)
Я тоже, поэтому я ценю лаконичность p/invoke на C#, по сравнению с кодом на C++
Здравствуйте, _Morpheus_, Вы писали:
_M_>Здравствуйте, __max, Вы писали:
__>>>>The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
__>>>>API одинаковое, те же я#ц@ — вид сбоку! __>>>>Но я бы предпочел DLL...
_M_>>>для C# очень удобно и красиво, т.к. код может находится непосредственно в приложении, т.е. DLL не нужна
__>>Может и красиво, но неудобно... __>>Описания структур, количество импортируемых функций... __>>проще все внутрь dll на плюсах завернуть...
_M_>ерунда какая-то, импортировать нужно всего 4 функции
_M_>никакие структуры описывать не нужно, весь код займет 10-20 строк...
_M_>Пример, глобальная блокировка клавиш <Win>: _M_>[c#] _M_>using System; _M_>using System.Diagnostics; _M_>using System.Windows.Forms; _M_>using System.Runtime.InteropServices; _M_>using System.Security;
_M_>class Program _M_>{ _M_> private const int WH_KEYBOARD_LL = 13; _M_>