Форум программистов, компьютерный форум CyberForum.ru

Посылка сообщения активному окну. - C++

Восстановить пароль Регистрация
 
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
09.03.2012, 18:20     Посылка сообщения активному окну. #1
При написании программы столкнулся с одной проблемой:
в окно должно писаться сообщение, но, когда я искал HWND программы с помощью утилиты Spy++ оказалось, что таких идентификаторов тьма тьмущая (заголовков окон нет, класс окон один и тот же, а именно TChatRichEdit), и сообщение шлется первому окну с таким идентификатором. Я ищу окно по классу.
Задача программы состоит в том, чтобы сообщение слалось только активному окну. Как это осуществить.
Прилагаю изображения, которые вам помогут осознать суть проблемы.
Вот код поиска HWND окна:
C++
1
2
3
4
5
6
7
8
9
10
  HWND wind, dow, kert, hwnd;
  wind = FindWindow("tSkMainForm", NULL);
  dow = FindWindowEx(wind, NULL, "TConversationForm", NULL);
  kert = FindWindowEx(dow, NULL, "TChatEntryControl", NULL);
  hwnd = FindWindowEx(kert, NULL, "TChatRichEdit", NULL);
  if(hwnd > 0)
  {
    char *s = Memo1->Lines->Text.c_str();          // Это пожалуй лишнее, но 
    SendMessage(hwnd, WM_SETTEXT,0,long(s)); // всё равно захотел добавить))
  }
Миниатюры
Посылка сообщения активному окну.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 18:20     Посылка сообщения активному окну.
Посмотрите здесь:

Посылка файла через sendto(...) C++
перемещение по консольному окну C++
Сообщения в С++ C++
C++ WinAPI vs VCL - Привязка к окну каких-либо данных
Сообщения между объектами C++
Послание эмуляции мыши определенному окну C++
Перехват сообщения C++
C++ Периодическая генерация событий сообщений окну - как реализовать?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
09.03.2012, 19:05  [ТС]     Посылка сообщения активному окну. #2
Спасибо за помощь господа! За ваше молчание!
Короче, я заюзал ф-цию
C++
1
GetForegroundWindow()
Вот как оно у меня получилось в коде
C++
1
2
3
4
5
6
7
8
9
10
11
  HWND wind, dow, kert, hwnd;
  wind=GetForegroundWindow();                                           // использовал ф-цию в коде
  wind = FindWindow("tSkMainForm", NULL);
  dow = FindWindowEx(wind, NULL, "TConversationForm", NULL);
  kert = FindWindowEx(dow, NULL, "TChatEntryControl", NULL);
  hwnd = FindWindowEx(kert, NULL, "TChatRichEdit", NULL);
  if(hwnd > 0)
  {
    char *s = Memo1->Lines->Text.c_str();
    SendMessage(hwnd, WM_SETTEXT,0,long(s));
  }
Получил долгожданный эффект, а именно - программа отправляет сообщения только активному окну.
И ещё раз спасибо за ПОМОЩЬ!
Yandex
Объявления
09.03.2012, 19:05     Посылка сообщения активному окну.
Ответ Создать тему
Опции темы

Текущее время: 05:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru