![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 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 не канает или я не умею им пользоваться --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
Я так понял, ты хочеш в Run-Taim режиме посылать сообшения другим окнам. Тебе придется делать свой интерпретатор сообшений. Т.е. пользователь написал название сообшения. Ты по своим таблицам находиш номер сообшения соответствуюший данной строке и посылаеш его. А еше проше сделать ComboBox Туда забить все сообшения. Пользователь выбирает онное. И ты уже конвертируеш номер итема в номер сообшения.
-------------------- Пролетал мимо. |
|||
|
||||
| gonzales |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: нет Всего: 2 |
это ты самую суть ухватил
А вот с этим проблема, ведь я же не могу охватить все программы с системными сообщениями, опять же есть WM_USER+... А неужели нет уже готовых функций интерпретирования? --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
||||
|
|||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
На WM_USER+... 100 процентов уверен, что нет никакой функции. Так как эти сообшения каждый программист вправе интерпретировать сам, как захочет. Список всех стандартных сообшений есть в юните, помоему с именем Messages. Могу и ошибаться. С Дельфи давно не работал.
Это сообщение отредактировал(а) Fin - 27.4.2006, 00:07 -------------------- Пролетал мимо. |
|||
|
||||
| gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: нет Всего: 2 |
про это не допонял, например из SDK одного приложения WM_USER+201; // Переключить на канал с абсолютным порядковым номером (LParam = 1..999) Про стандартные функции понятно, их можно выдрать, но не хочется жестко привязываться, хочется гибкости, чтоб пользователя не ограничивать. --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
Это конкретная привязка на конкретное приложение. Я могу например данным сообшением WM_USER+201 уведомлять свое окно, что ему нужно отключить кнопку "Запуск" и никто мне этого не может запретить. Если ты настраиваеш свою прогу на конкретное приложение, то заставлять юзера печатать сообшение WM_USER+201 не самое романтичное занятие. Лучше уж сделать кнопочку, которое это сообшение будет слать окну. Стандартные сообшения уже привязаны к номерам и к действиям. С ними в этом отношении легче. -------------------- Пролетал мимо. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
>Автор
Для используемых системой сообщений составь таблицу соответствия (сообщения ест в Messages.pas). Для всех остальных сообщений такой возможности нет, только если тебе не нужно это для конкретных приложений, в которых тебе известны их пользовательские номера сообщений. -------------------- |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Лучше сделай комбобокс, в который загони все возможные сообщения.
|
|||
|
||||
| gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: нет Всего: 2 |
В общем получается такой возможности нет, хотя это странно
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Ничего странного.
Сообщения - это двухбайтовое число. Строкового представления они не имеют. То, что компилятор позволяет тебе использовать констатны - это только для того, чтобы в цифрах не запутаться. Это ж не RTTI, а WinAPI. |
|||
|
||||
| Wing |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 19.3.2006 Репутация: нет Всего: нет |
||||
|
||||
| Fin |
|
||||||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
В MSDN записано следуюшее
Т.е. сообшения должны быть уникальны для системы. И область выделения номера от 0xC000 и до 0xFFFF. Напомню, что стандартные осообшения начинаются с 0x0001 -------------------- Пролетал мимо. |
||||||
|
|||||||
| AKN |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
gonzales, открой делфю и зажми Ctrl и нажми на слово Messages в списке подключаемых модулей. Там ты увидишь строковые константы и соответствующие им коды сообщения. напиши функцию, которая бы искала значение кода сообщения по его строковому значению и вставляй это значение в сендмессаг себе на здоровье...
|
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |