информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] А может RegisterHotKey не пашет если окно является диалоговым ? 29.05.01 19:31  Число просмотров: 906
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все так.
У меня он не летает ...стоит Win 2K
<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-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach