информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] RegisterHotKey 28.05.01 17:29  Число просмотров: 1227
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>

BEGIN_MESSAGE_MAP(CKBGProgDlg, CDialog)
//{{AFX_MSG_MAP(CKBGProgDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_HOTKEY, HideIn) // сообщение WM_HOTKEY

END_MESSAGE_MAP()

BOOL CKBGProgDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

//Регистрация клавиши
RegisterHotKey(this->m_hWnd, 1, MOD_SHIFT,VK_F11);


return TRUE; // return TRUE unless you set the focus to a control
}

//фу-я горячей клавиши
void CKBGProgDlg::HideIn()
{
ShowWindow(SW_SHOW);
}


в заголовочном файле диалога:

protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CKBGProgDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();

afx_msg void HideIn(); // фу-я HideIn();

afx_msg void OnDestroy();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

Удачи Vital.
<programming>
[Win32] RegisterHotKey 28.05.01 10:55  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
Что-то у меня не получилось с ней ...

Вобщем я хочу добиться чтобы программа реагировала на комбинацию клавиш (всплывала) даже если главное окно скрыто (SW_HIDE)

Я так понимаю, эта функция так сработает ? При нажатии комб. кл. прилетит сообщение WM_HOTKEY. Так ? А ко мне ничего не прилетает...

Или с ее помощью так не выйдет и только клавиатуру хучить ?

Не, я все-таки думаю, что я где-то не так сделал.

У кого фесть пример использование этой штуковины ?
[Win32] RegisterHotKey 28.05.01 17:29  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>

BEGIN_MESSAGE_MAP(CKBGProgDlg, CDialog)
//{{AFX_MSG_MAP(CKBGProgDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_HOTKEY, HideIn) // сообщение WM_HOTKEY

END_MESSAGE_MAP()

BOOL CKBGProgDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

//Регистрация клавиши
RegisterHotKey(this->m_hWnd, 1, MOD_SHIFT,VK_F11);


return TRUE; // return TRUE unless you set the focus to a control
}

//фу-я горячей клавиши
void CKBGProgDlg::HideIn()
{
ShowWindow(SW_SHOW);
}


в заголовочном файле диалога:

protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CKBGProgDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();

afx_msg void HideIn(); // фу-я HideIn();

afx_msg void OnDestroy();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

Удачи Vital.
Эх.. Я ведь так и делал.. Странно. Че у меня не пашет. Кстати, у тебя в коде кое-чего не 28.05.01 17:48  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
Кое-чего не так. Хотя на это можно и не обращать внимания. То меня че-то подбило сказать. :-) Все равно хуже не будет.
(если это твоя прога)
У тебя в обработчике WM_HOTKEY не проверяется ID клавиши.
Вдруг потом добавишь еще одну ХОТ, придется переделывать. Лучше изначально делать дефайны и предусматривать все.. Это есть хороший стиль.
Но это я так, к слову. :-)
Слушай, скажи, я так понял что ты на MFC проги клепаешь. Вот интересно (для статистики), MFC ускоряет для тебя написание кода ?
[C++] Эх.. Я ведь так и делал.. Странно. Че у меня не пашет. Кстати, у тебя в коде кое-чего не 29.05.01 03:36  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Кое-чего не так. Хотя на это можно и не обращать внимания.
> То меня че-то подбило сказать. :-) Все равно хуже не будет.
> (если это твоя прога)
> У тебя в обработчике WM_HOTKEY не проверяется ID клавиши.
> Вдруг потом добавишь еще одну ХОТ, придется переделывать.
> Лучше изначально делать дефайны и предусматривать все.. Это
> есть хороший стиль.
> Но это я так, к слову. :-)
> Слушай, скажи, я так понял что ты на MFC проги клепаешь.
> Вот интересно (для статистики), MFC ускоряет для тебя
> написание кода ?


Что касается прог, то я сейчас их не особо клепаю.
Пока изучаю систему. А Visual C++ и MFC в частности,
начал изучать и использовать не так давно, так что для
статистики сказать ничего не могу.
А вообще меня больше привлекает программирование
больше приближенное к системному.
А ты как пишешь?

Vital.
to Vital : 29.05.01 12:13  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
> Что касается прог, то я сейчас их не особо клепаю.
> Пока изучаю систему. А Visual C++ и MFC в частности,
А я сейчас решил MFC заняться пока.

> А вообще меня больше привлекает программирование
> больше приближенное к системному.
Ага. :-) Самое оно. И меня так же. Можешь глянуть последний продукт - www.nmap.ru, раздел tools. TCP_LOGGER - размер файла - ~ 13 Kb. Чистое API. Исходники прилагаются. MVC 5.0.
Net programming 29.05.01 22:56  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Что касается прог, то я сейчас их не особо клепаю.
> > Пока изучаю систему. А Visual C++ и MFC в
> частности,
> А я сейчас решил MFC заняться пока.
>
> > А вообще меня больше привлекает программирование
> > больше приближенное к системному.
> Ага. :-) Самое оно. И меня так же. Можешь глянуть последний
> продукт - www.nmap.ru, раздел tools. TCP_LOGGER - размер
> файла - ~ 13 Kb. Чистое API. Исходники прилагаются. MVC
> 5.0.

Привет.
Я вижу ты занимаешься сетевым программированием.
Это круто. Не мог бы ты подсказать источники и(или) лит-ру
по этой теме. Что-нибудь такое "глубокое" типа "Windows" Д.Рихтера.

Спасибо. Vital.
Тогда лучше бы мыло оставил 30.05.01 11:57  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
> Я вижу ты занимаешься сетевым программированием.
> Это круто. Не мог бы ты подсказать источники и(или) лит-ру

Неа. Ничего такого я не припоминаю.
Я как-то так с этим всем разобрался... Хотя www.sources.ru тоже мне помог. Так переведенные RFC по протоколам некоторым лежат.
А вообще, разбирался я при помощи своей же проги (см. выше).
Так что, бери у меня вчерашнюю версию и вперед! :-) Она полностью протоколирует весь обмен сообщениями клиента с сервером.
Тогда лучше бы мыло оставил 30.05.01 12:09  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Я вижу ты занимаешься сетевым программированием.
> > Это круто. Не мог бы ты подсказать источники и(или)
> лит-ру
>
> Неа. Ничего такого я не припоминаю.
> Я как-то так с этим всем разобрался... Хотя www.sources.ru
> тоже мне помог. Так переведенные RFC по протоколам
> некоторым лежат.
> А вообще, разбирался я при помощи своей же проги (см.
> выше).
> Так что, бери у меня вчерашнюю версию и вперед! :-) Она
> полностью протоколирует весь обмен сообщениями клиента с
> сервером.

Да мне бы разобраться с сокетами, функциями для них и портами
сначала.

E-mail: VitalH@yandex.ru
Vital.
А может RegisterHotKey не пашет если окно является диалоговым ? 28.05.01 18:27  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
А может RegisterHotKey не пашет если окно является диалоговым ? 28.05.01 20:19  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
KMiNT,

Vital прав

не поленился проверил, все работает. и диалог тут не причем (именно на диалоге и проверил)
Hot Key регистрируется, и месаг ловится без проблем.
наверняка что то у тебя не так.
Возможно твой Key конфликтует с кем то.
Проверь еще раз, пропиши че нить не ординарное и попробуй отловить.
Всем Great сенкс! Глюк найнден. Правда я не понял его смысл.. :-)) (++) 29.05.01 12:10  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
Да, все пашет. Как тоьлко виртуал кей VK_F11 попробывал поставить вместо своей 't'.
Кстати, код возврата естественно был нормальный. Если бы конфликтовала, я бы видел. :-) А так просто не было мессаг WM_HOTKEY и все...

Не пойму, почему 't' нельзя написать ? Вроде тип данных DWORD нужно подствлять....

Ладно моя прога теперь выглядит так (и работает) :

......
#define Show_HotKey 1
...........
RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,VK_F12);
...........

//обработчик...
....
case WM_HOTKEY:
// а дальше уже проверки остальные.....



P.S. А если "RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,'t');" , или др. символ, нифига не приходят мессаги WM_HOTKEY... Хотя функ-я возвращает OK.
[C++] Cмысл 29.05.01 18:55  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Да, все пашет. Как тоьлко виртуал кей VK_F11 попробывал
> поставить вместо своей 't'.
> Кстати, код возврата естественно был нормальный. Если бы
> конфликтовала, я бы видел. :-) А так просто не было мессаг
> WM_HOTKEY и все...
>
> Не пойму, почему 't' нельзя написать ? Вроде тип данных
> DWORD нужно подствлять....
>
> Ладно моя прога теперь выглядит так (и работает) :
>
> ......
> #define Show_HotKey 1
> ...........
> RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,VK_F12);
> ...........
>
> //обработчик...
> ....
> case WM_HOTKEY:
> // а дальше уже проверки остальные.....
>
>
>
> P.S. А если
> "RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,'t');" , или
> др. символ, нифига не приходят мессаги WM_HOTKEY... Хотя
> функ-я возвращает OK.



Пиши так:
RegisterHotKey(hwndMain,Show_HotKey,MOD_ALT,'T');
в этой ф-и надо использовать символы верхнего регистра,
т.к. сравнение идет именно по ним.

Vital.


Тю ты твою ... Ясно. А в доках что-то я не заметил об этом упоминания. 30.05.01 10:35  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
[C++] А может RegisterHotKey не пашет если окно является диалоговым ? 29.05.01 03:34  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> KMiNT,
>
> Vital прав
>
> не поленился проверил, все работает. и диалог тут не причем
> (именно на диалоге и проверил)
> Hot Key регистрируется, и месаг ловится без проблем.
> наверняка что то у тебя не так.
> Возможно твой Key конфликтует с кем то.
> Проверь еще раз, пропиши че нить не ординарное и попробуй
> отловить.

На самом деле код, который я привел для горячей клавиши
у меня работает немного странно, а именно: при
нажатии горячей клавиши больше трех раз моя программа вызывает
ошибку в MFC42.DLL и аварийно завершается.
Я еще этой проблемой особо не занимался, и может эта моя ошибка,
а может нет?

Vital.
[C++] А может RegisterHotKey не пашет если окно является диалоговым ? 29.05.01 19:31  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все так.
У меня он не летает ...стоит Win 2K
[C++] Ты считаешь это глюк моей системы или MFC42.DLL или Visual C++? 29.05.01 22:59  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
[C++] Ты считаешь это глюк моей системы или MFC42.DLL или Visual C++? 30.05.01 01:46  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>

да тут х поймешь сразу.
вообще я сторонник обновления того, что имеешь
поэтому, если у тебя WIndows NT, то скачай новый Service Pack. У тебя какая система? наверняка Windows 95/98, для них по моему патчи есть.
и еще в обязательном порядке Visual Studio Srvice Pack 6
не знаю у кого как, но я разничу чувствовал. совсем недавно один и тотже проект у меня компилился по разному, точнее компилился и линковался, но в одном случае он тут же вылетал, а в другом работал как надо - как вариант с RegisterHotKey. написал прогу, поставил компилиться на WinMe, он летал. сперва подумал разные системы и искал разницу в ф-иях, потом скачали новый СП и все решилось.
Вообще всем советую кто прочтет это сообщение - люди, поставьте новый VSSP, хотя он по размерам большой - около 133 Mb.

и еще, я смотрел твои мессаги - если хочешь занятся системным программированием и сетями под винд., в смесле широких возможностей, поставь Windows 2000. пусть это не звучит как наставление, просто добрый совет, потому что возможностей больше чем даже у NT. Хотя на Win 9X можешь написать VxD, что на System Based on NT Technoligy не сделаешь.
2Vital - Тогда для начала сделай все четко, потом глянь (я про "ошибки" писал выше - мож в этом все дело) 30.05.01 18:50  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
> WinMe, он летал. сперва подумал разные системы и искал
> разницу в ф-иях, потом скачали новый СП и все решилось.
Да, прикол. :-)

> возможностей больше чем даже у NT. Хотя на Win 9X можешь
> написать VxD, что на System Based on NT Technoligy не
> сделаешь.

???
Не понял. Почему ??
ответ 30.05.01 19:19  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > WinMe, он летал. сперва подумал разные системы и искал
> > разницу в ф-иях, потом скачали новый СП и все
> решилось.
> Да, прикол. :-)
>
> > возможностей больше чем даже у NT. Хотя на Win 9X
> можешь
> > написать VxD, что на System Based on NT Technoligy не
> > сделаешь.
>
> ???
> Не понял. Почему ??

потому что Virtual Driver - базируется на 9х. NT и 9x - это все таки разные технологии. у Virtual Driver есть принципиальные отличия, которые не пройдут под NT.
VxD - virtual device driver например - VKD - Virt.Keyboard Dr., VDD - Virt. Display. (это к слову :)) Пишутся и для НТ, и для Win9x. 31.05.01 13:09  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>

> > > написать VxD, что на System Based on NT
> Technoligy не
> > > сделаешь.
> >
> > ???
> > Не понял. Почему ??
>
> потому что Virtual Driver - базируется на 9х. NT и 9x - это
> все таки разные технологии. у Virtual Driver есть
> принципиальные отличия, которые не пройдут под NT.

?? Я не понял. Ты хочешь сказать что VxD под НТ не пишутся ??? :))
Чего-то я тебя понять никак не могу.
1  |  2 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach