Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отключение сочетаний клавиш <ctrl>+<alt>+<del>, Желательно в 2k или XP Windows'е 
:(
    Опции темы
Nblin
Дата 23.1.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



Отключение сочетаний клавиш <ctrl>+<alt>+<del> в ОС Windows 2k or XP smile
PM MAIL   Вверх
En_t_end
Дата 23.1.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



smile
Попробуй зарегестрировать RegisterHotKey'ем такую комбинацию, хотя я и сумневаюсь, что вынды разрешатЪ. - поищи в %%%.h обзор битовых масок на кнопки.
Тут надо глубже копать smile допустим если юзать CHotKeyCtrl, то там явно запрещена данная комбинация... значит mfc явно не подойдет - копай в сторону winapi и создание dll-перехватчика!!!
PM MAIL ICQ Skype GTalk Jabber   Вверх
Nblin
Дата 23.1.2005, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



Что есть dll перехватчик?
PM MAIL   Вверх
En_t_end
Дата 23.1.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



MyHookDll.h
Код

#define MYHOOKDLL_API __declspec(dllexport)

#include <windows.h>

extern "C"
{
MYHOOKDLL_API int  SetHook( HWND,UINT );
MYHOOKDLL_API int  UnSetHook();
}


MyHookDll.cpp
Код


#include "MyHookDll.h"

// Глобальные переменные
HINSTANCE hInstance = NULL; // The instance of the DLL

// Описание нашей хук-функци
LRESULT CALLBACK KeyboardMsgProc ( int, WPARAM, LPARAM );

#pragma data_seg(".SData")
HHOOK hMsgHook = NULL; // Handle нашего хука
UINT KBoardMessage = NULL; // Сообщение, которое мы будем посылать
                          // родительскому приложению
HWND hParentWnd = NULL; // Окно родительского приложения
#pragma data_seg( )

//Директива линкеру создать разделяемую(shared) секцию с атрибутами RWS
#pragma comment(linker,"/SECTION:.SData,RWS")

// Далее, обычная DllMain
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
 hInstance = (HINSTANCE)hModule;

return TRUE;
}

// Две функции SetHook и UnsetHook

MYHOOKDLL_API int SetHook (HWND hWnd, // window which
                   // should receive notification messages
 UINT UpdateMsg) // notification message
{
if (hWnd == NULL) return -1;

// Save received parameters
hParentWnd = hWnd;
KBoardMessage = UpdateMsg;

// Set hook
hMsgHook= ::SetWindowsHookEx (WH_GETMESSAGE, KeyboardMsgProc, hInstance, 0);

// If we are failed...
if (hMsgHook == NULL)
 return -1;
 
return 0;
};

MYHOOKDLL_API int UnSetHook()
{
UnhookWindowsHookEx (hMsgHook);

hMsgHook = NULL;

return 0;
};


LRESULT CALLBACK KeyboardMsgProc (int code, WPARAM wParam, LPARAM lParam)
{
if (code >= 0)
{
 MSG * msg = (MSG * )lParam;

 if ((lParam)
  &&(msg->message == WM_CHAR)
  &&(wParam == PM_REMOVE))

  PostMessage (hParentWnd, KBoardMessage, msg->wParam, 0 );
}

return CallNextHookEx (hMsgHook, code ,wParam , lParam);
};

ИЗИНЯЮСЬ, что не дал ссылку, статья у меня на компе, она с сайта http://www.uinc.ru/

Только тут идёт только перехват символов, изменяй на WM_KEYDOWN, а вообще найди статью на www.uinc.ru - там это подробно описанно, может поможет
PM MAIL ICQ Skype GTalk Jabber   Вверх
Nblin
Дата 23.1.2005, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



Спасибочки!!!!!!!!!!!!!!!!!!!!!!!
PM MAIL   Вверх
Alexandr87
Дата 28.1.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: нет
Всего: 39



сомневаюсь что вышеизложенным способом не удастся отключить комбинацию.
PM Jabber   Вверх
En_t_end
Дата 28.1.2005, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



"сомневаюсь что вышеизложенным способом не удастся отключить комбинацию. "
Наверно имелось ввиду "...что вышеизложенным способом удастся отключить комбинацию"
Я сразу сказал - что пример не для данной ситуации, но вопрос был задан относительно dll-перехватчика, я представил его пример, а человек, пусть сам копает в нужную сторону.
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 30.1.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Кстати...раз эта комбинация зарезервированна менеджером задач, можно попробывать внедриться к нему и блокировать сообщение о нажатии данной комбинации.
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 30.1.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



http://forum.vingrad.ru/index.php?showtopic=980 - сюда глянь smile аналог, я думаю можно сделать и для ctr alt del , добавь только туда вот так : MOD_CONTROL, MOD_ALT, VK_DEL - ну или приблизительно так smile короче по ходу вынды настолько тупа, что разрешает юзать свои горчие клавиши !
PM MAIL ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0875 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.