Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/32: Рейтинг темы: голосов - 32, средняя оценка - 4.97
 Аватар для russich
48 / 47 / 13
Регистрация: 02.12.2009
Сообщений: 144

Дескриптор окна HWND

15.06.2010, 13:51. Показов 6431. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать так, чтобы первый раз, при нажатии пункта меню, внешняя программа запускалась, а второй раз ей посылалось бы сообщение.

У меня такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TFMain::pmnuPlugSubClick(TObject *Sender)
{
 HWND hwnd;
 if(hwnd=FindWindowA(nameclass.c_str(),namecapt.c_str()))
 {
  PostMessageA(hwnd,WM_FORMATCODE,0,2401);
 }
 else
 {
  ShellExecute(Handle,"open","out_prog",0,0,SW_RESTORE);
 }
}
При отладке hwnd почему-то всегда NULL, - и при первом и при втором нажатии, поэтому запускается та же программа (второй экземпляр).

В чем моя ошибка?

Все вопрос снят, нашел ошибку, был неверно записан класс внешней программы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2010, 13:51
Ответы с готовыми решениями:

EOSError 1400 “Недопустимый дескриптор окна”
Программа (назовём её My1.exe ) периодически обращается из потока к COM-порту. На компьютере есть и другие программы, которые так же могут...

Недопустимый дескриптор окна. (Обмен сообщениями: TCP)
Доброго времени суток. Есть программа, которая производит обмен сообщениями по сети между несколькими компьютерами (использую TCP...

Узнать HWND главного окна процесса имея его имя?
Запускаем калькулятор Windows. Имя этого процесса (полученное с использованием PROCESSENTRY, CreateToolhelp32Snapshot)...

4
 Аватар для Danil_e71
32 / 32 / 8
Регистрация: 07.02.2010
Сообщений: 92
15.06.2010, 13:55
FindWindowA не всегда правильно работает, заменить как не знаю.
А посылать лучше не PostMessage, а SendMessage
0
 Аватар для russich
48 / 47 / 13
Регистрация: 02.12.2009
Сообщений: 144
15.06.2010, 14:10  [ТС]
Danil_e71,

PostMessage - нужно для того, чтобы посылающая программа не ждала обработки сообщения, SendMessage - будет ждать пока сообщение не будет обработано.

Так у меня при использовании SendMessage программа как бы зависала и не работала, пока я на внешней программе не выполнял нужное действие.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
15.06.2010, 16:51
russich, попробуйте реализовать поиск без указания имени класса, то есть:
C++
1
HWND hWnd = FindWindow(NULL,name);


Цитата Сообщение от Danil_e71 Посмотреть сообщение
FindWindowA не всегда правильно работает
Что значит неправильно? Уверен, что вы просто передаёте ей не те параметры, поэтому, поиск окна затруднителен.

Цитата Сообщение от Danil_e71 Посмотреть сообщение
А посылать лучше не PostMessage, а SendMessage
Спорный вопрос. Выбирать ф-цию нужно в зависимости от того, какое именно действие вам нужно.
SendMessage - посылает сообщение окну или контролу и ждёт подтверждения.
PostMessage - посылает и продолжает выполнение команд, следующих далее (без подтверждения)
2
 Аватар для russich
48 / 47 / 13
Регистрация: 02.12.2009
Сообщений: 144
15.06.2010, 18:00  [ТС]
MiCr0s0fT,

Все вопрос снят, нашел ошибку, был неверно записан класс внешней программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.06.2010, 18:00
Помогаю со студенческими работами здесь

Как узнать HWND созданного только что SendMessage окна? и желательно без FindWindow
заранее спасибо если чо, то FindWindow почему то не работает. Добавлено через 54 минуты Я задумался и решил что это как будто...

Дескриптор окна из glutCreateWindow и HWND
Собственно, как их связать? т.е. использовать дескриптор из glutCreateWindow напрямую в WinAPI функции не получается, тербует HWND... Как...

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно "А". Это окно создаёт новое недочернее окно "Б". Необходимо найти HWND окна "Б",...

Нужно получить дескриптор окна имея дескриптор контрола
Нужно получить дескриптор окна имея дескриптор контрола, подскажите как

Получить список элементов, имеющих дескриптор hWnd
Подскажите, пожалуйста, как в следующей процедуре учесть только те элементы, которые имеют дескриптор hWnd ??? Friend Property Get...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru