Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2011, 17:52   #1
SergeyEfimov
 
Регистрация: 25.02.2011
Сообщений: 3
По умолчанию Может ли SetWindowsHookEx(WH_CALLWNDPROC) повесить всю систему?

Привет.

Наступил на траблы в кодинге, немогу даже посмотреть дебаг OutputDebugString под debugview. Система просто зависает при нажатии на любую из иконок в трее. С чем это может быть связано?


Первый вопрос: Если я использую SendMessage() внутри хук функции, вернёца ли это сообщение мне снова или система понимает логику и вызовет все келлбеки кроме моего?


Второй вопрос: Я использую хук функцию чтобы ловить сообщения посланные системой при клике на иконке или движении мышкой над иконкой. Правильно ли использовать SetWindowHookEx(WH_CALLWNDPROC, myfunc, hDll, 0) или я должен использовать параметр thread установив его в значение треда создавшего окно, которое сконфигурено для получения сообщений при Shell_NotifyIcon?
SergeyEfimov вне форума Ответить с цитированием
Старый 25.02.2011, 18:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при нажатии на любую из иконок в трее.
А зачем ловить нажатия там? Цель какая?
Цитата:
Может ли
Может. Еще как.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.02.2011, 18:17   #3
SergeyEfimov
 
Регистрация: 25.02.2011
Сообщений: 3
По умолчанию

нужно ловить, стоит такая задача. всё ловица нормально кроме того что я описал выше.
SergeyEfimov вне форума Ответить с цитированием
Старый 26.02.2011, 01:23   #4
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Бинарник программы выкладывайте
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 26.02.2011, 02:01   #5
SergeyEfimov
 
Регистрация: 25.02.2011
Сообщений: 3
По умолчанию

К сожалению не могу весь бинарник, могу выложить части кода. Вот например хук функция:

Код:
HOOKEX_API LRESULT CALLBACK MouseWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	static unsigned long msgid = 0;
	unsigned long ret2;
	DWORD dwRead;
        PCWPSTRUCT cs;

        cs = (PCWPSTRUCT) lParam;

	if(cs->message == WM_USER+1000 || cs->hwnd == hwnd)
		return 0;

	unsigned int skip[] = {0x20,0xd,0x84,0x44,0x43f,0x7e8,0x229,0xe,0x11,0x133,
		0x210, 0x111, 0xb0,0xb1,0x1006,0x55,0x7d,0x7c,0x83,0x1c,0x287,0x281,0xbd33,0x135,
		0x401,0x4a,0x100d,0x406,0x41c,0x4e,0x100c,0x40b,0x318,0x102c,0x410,0x4a0,
		0x440
		};
	
	for(int i=0;i<(sizeof(skip)/sizeof(int));i++)
	{
		if(skip[i]==cs->message)
			return CallNextHookEx(NULL, nCode, wParam, lParam);
	}
	
	if(cs->wParam&&cs->lParam&&cs->hwnd)
	{
		//deb("MouseWndProc: cs->m: 0x%04x hwnd: 0x%08x msg: 0x%08x lParam(%s):0x%08x cs->w: %x cs->l: %x ", 
			//cs->message, cs->hwnd, wParam, IsBadReadPtr((void*)lParam, sizeof(CWPSTRUCT)) ? "BAD":"GOOD",lParam,cs->wParam,cs->lParam);
		//deb("message: %d 0x%08x", cs->message, cs->message);

		
		
		
		ret2 = CallNamedPipeA("\\\\.\\pipe\\wndmsgs", cs, sizeof(CWPSTRUCT), NULL, 0, &dwRead, 0);
		if (!ret2)
			deb("%u CallNamedPipe(\\\\.\\pipe\\wndmsgs): %s", msgid, fmterr());
		msgid++;
	}
	
	return CallNextHookEx(NULL, nCode, wParam, lParam);
}

Последний раз редактировалось rpy3uH; 26.02.2011 в 11:05.
SergeyEfimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SetWindowsHookEx Dalt Win Api 13 25.01.2011 14:03
SetWindowsHookEx не могу перехватить нажатие клавиши. flug Общие вопросы Delphi 0 10.12.2010 09:19
WH_CALLWNDPROC, расширение Системных часов TGrey[WoLf] Win Api 0 25.06.2010 16:00
Получить ID процесса для setwindowshookex TwiX Общие вопросы Delphi 2 20.05.2010 20:00
как правильно компонент может повесить Хук на сообщения(родителя/приложения) Пепел Феникса Компоненты Delphi 2 12.07.2009 00:51