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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
#1

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

09.03.2012, 18:20. Просмотров 741. Ответов 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++
Через протокол UDP. Нужно открывать файл для чтения и указатель на него передавать в sendto?

Перемещение по консольному окну - C++
как можно перемещать курсор в консоли?то есть в координаты окна допустим 60 80 и т.д. в паскале есть похожая функция а на с/с++ как она...

Послание эмуляции мыши определенному окну - C++
Здравствуйте, мне нужно послать эмуляцию нажатии клавиши мыши определенному окну: 1. Как по названию узнать hWnd окна? 2. Как послать...

Послать сообщение окну в указанный момент времени - C++
Здравия желаю! Вот сижу, в носу ковыряюсь от скуки — задел извилину. Интересно стало: как можно без цикла проверки системного...

Передача дочернему окну указателя на родительское окно - C++
Как передать дочернему окну ТИПИЗИРОВАННЫЙ!!!( не void* ) указатель на родительское окно?

WinAPI vs VCL - Привязка к окну каких-либо данных - C++
Привет. Решил взяться доработать класс, который когда-то делал, класс окна наподобие TWinControl или TForm из VCL. Меня...

Периодическая генерация событий сообщений окну - как реализовать? - C++
Почитал немного про создание оконных приложений - очень интересно. Даже пятнашки, думаю, могу навскидку за несколько минут написать. А...

Сообщения в С++ - C++
Всем привет! В общем надо мне из одного модуля на форму Qtешную передавать данные с помощью сообщений, вот как то как это сделать так...

Перехват сообщения - C++
Я не уверен, что пишу вопрос в нужный раздел, но все же задам: У меня на компьютере лежит папка. Мне нужно с помощью чего нибудь...

Сообщения в MessageBoxA - C++
Здравствуйте! Помогите запустить данный код: char *Str(int i){ char buffer; char *s = itoa(i,buffer,10); return s; };


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Клод
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));
  }
Получил долгожданный эффект, а именно - программа отправляет сообщения только активному окну.
И ещё раз спасибо за ПОМОЩЬ!
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru