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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2010, 10:42   #1
Pirotexnik
Форумчанин
 
Аватар для Pirotexnik
 
Регистрация: 22.03.2009
Сообщений: 110
Счастье Кликаем по эллементу, полочаем хендл, скрываем :)

Доброго времени суток, пишу программу, которая будет скрывать окошки или элементы по нажатию, как реализовать?

Код:
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		
		case WM_RBUTTONDOWN:
					MessageBox(0, L"Теперь, игры не будут видны в трее ;)", L"Мессага", MB_ICONEXCLAMATION);
					HWND H;
					H=FindWindow(L"Shell_TrayWnd",NULL); //находим хандл трея
					ShowWindow(H, SW_HIDE);//делаем трей невидимым
					break;
		case WM_LBUTTONDOWN: 
					MessageBox(0, L"Такс, изучаемс окошечки :)", L"Мессага", MB_ICONEXCLAMATION);
					H=FindWindow(L"Shell_TrayWnd",NULL); //находим хандл трея
					ShowWindow(H, SW_SHOW);//делаем трей видимым
					//Sleep(2000);
					
					break;
		case WM_KEYDOWN:							
					PostMessage(hWnd,WM_DESTROY,0,0); 
					break;


		default:
					return DefWindowProc(hWnd, msg, wParam, lParam);
	}

return 0;
Pirotexnik вне форума Ответить с цитированием
Старый 06.06.2010, 15:35   #2
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Не слишком уже ясно чего вы хотите. Вопрос один, а код другой

Но если я вас правильно понял, то воспользуйтесь перехватом сообщений
Обработчик такой:
Код:
LRESULT CALLBACK MsgProc(int code, WPARAM wParam, LPARAM lParam)
{
	MSG msg = *(MSG*)lParam;
	switch (msg.message)
	{
		case WM_RBUTTONDOWN:
					MessageBox(0, L"Теперь, игры не будут видны в трее ;)", L"Мессага", MB_ICONEXCLAMATION);
					HWND H;
					POINT point;
					GetCursorPos(&point);
					H=WindowFromPoint(point);
					ShowWindow(H, SW_HIDE);//делаем трей невидимым
					break;
		case WM_LBUTTONDOWN: 
					MessageBox(0, L"Такс, изучаемс окошечки :)", L"Мессага", MB_ICONEXCLAMATION);

					POINT point;
					GetCursorPos(&point);
					H=WindowFromPoint(point);

					ShowWindow(H, SW_SHOW);//делаем трей видимым
					//Sleep(2000);
					
					break;

	}
	return CallNextHookEx(SysHook,code,wParam,lParam);
}
подпись
liljon вне форума Ответить с цитированием
Старый 06.06.2010, 22:28   #3
Pirotexnik
Форумчанин
 
Аватар для Pirotexnik
 
Регистрация: 22.03.2009
Сообщений: 110
По умолчанию

Да-да, поняли вы меня правильно, а код я дал тот, который имел на том этапе)

Вот, поправил как Вы сказали - куча ошиПак

Код:
LRESULT CALLBACK MsgProc(int code, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	MSG msg = *(MSG*)lParam;
	switch (msg.message)
	{
	
		case WM_DESTROY:
					PostQuitMessage(0);
					break;
		case WM_RBUTTONDOWN:
					MessageBox(0, L"Теперь, игры не будут видны в трее ;)", L"Мессага", MB_ICONEXCLAMATION);
					HWND H;
					POINT point;
					GetCursorPos(&point);
					H=WindowFromPoint(point);
					ShowWindow(H, SW_HIDE);//делаем объект невидимым
					break;
		case WM_LBUTTONDOWN: 
					MessageBox(0, L"Такс, изучаемс окошечки :)", L"Мессага", MB_ICONEXCLAMATION);

					POINT point;
					GetCursorPos(&point);
					H=WindowFromPoint(point);

					ShowWindow(H, SW_SHOW);//делаем объект видимым
					//Sleep(2000);
					
					break;
		case WM_KEYDOWN:							
					PostMessage(hWnd,WM_DESTROY,0,0); 
					break;

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



Error 1 error C2082: redefinition of formal parameter 'msg' d:\c++\WinAPI\WinAPI\main.cpp 64
Error 2 error C2228: left of '.message' must have class/struct/union d:\c++\WinAPI\WinAPI\main.cpp 65
Error 3 error C2086: 'POINT point' : redefinition d:\c++\WinAPI\WinAPI\main.cpp 82
Error 4 error C2065: 'SysHook' : undeclared identifier d:\c++\WinAPI\WinAPI\main.cpp 95
Error 5 error C2059: syntax error : 'return' d:\c++\WinAPI\WinAPI\main.cpp 98
Error 6 error C2059: syntax error : '}' d:\c++\WinAPI\WinAPI\main.cpp 99
Error 7 error C2143: syntax error : missing ';' before '}' d:\c++\WinAPI\WinAPI\main.cpp 99
Error 8 error C2059: syntax error : '}' d:\c++\WinAPI\WinAPI\main.cpp 99
Pirotexnik вне форума Ответить с цитированием
Старый 06.06.2010, 22:44   #4
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

дело в том, что программу за вас я не напишу. Я указал направление в котором вам надо двигаться. Читайте про системные хуки
подпись
liljon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прописать событие к программно созданному эллементу? tocsik Общие вопросы Delphi 2 07.02.2010 17:57
хендл окна сообщения vanektoo Общие вопросы Delphi 3 07.11.2008 22:41
Как определить хендл SeRhy Помощь студентам 1 20.11.2007 20:14
Как узнать хендл SeRhy Помощь студентам 1 19.11.2007 21:39