Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SendMessage и все все все, как послать сообщение 
:(
    Опции темы
gonzales
Дата 26.4.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: нет
Всего: 2



Хочу посылать системные сообщения окну, хэндл которого знаю из текстовой строки, но SendMessage требует Cardinal???
Как быть???

Должно быть так, хочу закрыть приложение - пишу в Edit  WM_SYSCOMMAND, SC_CLOSE, должен получать 
postmessage(hBhWnd, WM_SYSCOMMAND, SC_CLOSE, 0);

как перевести 'WM_SYSCOMMAND' в WM_SYSCOMMAND или 'WM_SYSCOMMAND' в 274

RegisterWindowMessage не канает или я не умею им пользоваться

 
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Fin
Дата 26.4.2006, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



Я так понял, ты хочеш в Run-Taim режиме посылать сообшения другим окнам. Тебе придется делать свой интерпретатор сообшений. Т.е. пользователь написал название сообшения. Ты по своим таблицам находиш номер сообшения соответствуюший данной строке и посылаеш его. А еше проше сделать ComboBox Туда забить все сообшения. Пользователь выбирает онное. И ты уже конвертируеш номер итема в номер сообшения. 


--------------------
Пролетал мимо.
PM MAIL   Вверх
gonzales
Дата 26.4.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: нет
Всего: 2



Цитата

 так понял, ты хочеш в Run-Taim режиме посылать сообшения другим окнам

это ты самую суть ухватил

Цитата

Т.е. пользователь написал название сообшения. Ты по своим таблицам находиш номер сообшения соответствуюший данной строке и посылаеш его.

 
А вот с этим проблема, ведь я же не могу охватить все программы с системными сообщениями, опять же есть WM_USER+...

А неужели нет уже готовых функций интерпретирования? 
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Fin
Дата 27.4.2006, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



На WM_USER+... 100 процентов уверен, что нет никакой функции. Так как эти сообшения каждый программист вправе интерпретировать сам, как захочет. Список всех стандартных сообшений есть в юните, помоему с именем Messages. Могу и ошибаться. С Дельфи давно не работал.  

Это сообщение отредактировал(а) Fin - 27.4.2006, 00:07


--------------------
Пролетал мимо.
PM MAIL   Вверх
gonzales
Дата 27.4.2006, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: нет
Всего: 2



Цитата

На WM_USER+... 100 процентов уверен, что нет никакой функции


про это не допонял, например из SDK одного приложения WM_USER+201;    // Переключить на канал с абсолютным порядковым номером (LParam = 1..999)

Про стандартные функции понятно, их можно выдрать, но не хочется жестко привязываться, хочется гибкости, чтоб пользователя не ограничивать. 
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Fin
Дата 27.4.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



Цитата

про это не допонял, например из SDK одного приложения WM_USER+201;    // Переключить на канал с абсолютным порядковым номером (LParam = 1..999)

Это конкретная привязка на конкретное приложение. Я могу например данным сообшением WM_USER+201 уведомлять свое окно, что ему нужно отключить кнопку "Запуск" и никто мне этого не может запретить. Если ты настраиваеш свою прогу на конкретное приложение, то заставлять юзера печатать сообшение WM_USER+201 не самое романтичное занятие. Лучше уж сделать кнопочку, которое это сообшение будет слать окну.
Стандартные сообшения уже привязаны к номерам и к действиям. С ними в этом отношении легче. 


--------------------
Пролетал мимо.
PM MAIL   Вверх
Демо
Дата 27.4.2006, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 6
Всего: 50



>Автор
Для используемых системой сообщений составь таблицу соответствия (сообщения ест в Messages.pas).
Для всех остальных сообщений такой возможности нет, только если тебе не нужно это для конкретных приложений, в которых тебе известны их пользовательские номера сообщений. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Snowy
Дата 27.4.2006, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Лучше сделай комбобокс, в который загони все возможные сообщения. 
PM MAIL   Вверх
gonzales
Дата 27.4.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: нет
Всего: 2



В общем получается такой возможности нет, хотя это странно 
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Snowy
Дата 27.4.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Ничего странного.
Сообщения - это двухбайтовое число.
Строкового представления они не имеют.
То, что компилятор позволяет тебе использовать констатны - это только для того, чтобы в цифрах не запутаться.
Это ж не RTTI, а WinAPI. 
PM MAIL   Вверх
Wing
Дата 27.4.2006, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Цитата(Snowy @  27.4.2006,  10:25 Найти цитируемый пост)
Строкового представления они не имеют.

Немного не согласен. Есть очень хитрая функция RegisterWindowMessage. 
PM MAIL ICQ   Вверх
Fin
Дата 27.4.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



Цитата(Wing @  27.4.2006,  19:33 Найти цитируемый пост)
Немного не согласен. Есть очень хитрая функция RegisterWindowMessage.  

В MSDN записано следуюшее
Цитата

The RegisterWindowMessage function defines a new window message that is guaranteed to be unique throughout the system. The returned message value can be used when calling the SendMessage or PostMessage function. 

Цитата

Return Values

If the message is successfully registered, the return value is a message identifier in the range 0xC000 through 0xFFFF.
If the function fails, the return value is zero. 

Т.е. сообшения должны быть уникальны для системы. И область выделения номера от 0xC000 и до 0xFFFF. Напомню, что стандартные осообшения начинаются с 0x0001   


--------------------
Пролетал мимо.
PM MAIL   Вверх
AKN
Дата 3.5.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



gonzales,  открой делфю и зажми Ctrl и нажми на слово Messages в списке подключаемых модулей.  Там ты увидишь строковые константы и соответствующие им коды сообщения. напиши функцию, которая бы искала значение кода сообщения по его строковому значению и вставляй это значение в сендмессаг себе на здоровье... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.