Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Что за сообщение такое $C0E6?


dmk ©   (25.03.17 15:00

Что за сообщение такое $C0E6?


Игорь Шевченко ©   (25.03.17 15:28[1]

Пользовательское


D7   (04.04.17 20:19[2]

>> 0xC*** is a standard way to define a custom string message.

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644931(v=vs.85).aspx

>> 0xC000 through 0xFFFF - String messages for use by applications.
>> Message numbers in the fourth range (0xC000 through 0xFFFF) are defined at run time when an application calls the RegisterWindowMessage function to retrieve a message number for a string.
>> All applications that register the same string can use the associated message number for exchanging messages.
>> The actual message number, however, is not a constant and cannot be assumed to be the same between different sessions.


D7   (04.04.17 20:20[3]

Гораздо интереснее как Spy++ расшифровывает имена сообщений, в том числе таких...


dmk ©   (04.04.17 20:48[4]

В Delphi раньше WinSight вроде был, а потом убрали. А spy++ только в составе Visual C. Так что шпионов у меня нет. Может бесплатные есть?


Игорь Шевченко ©   (04.04.17 21:16[5]

D7   (04.04.17 20:20) [3]


> Гораздо интереснее как Spy++ расшифровывает имена сообщений,
>  в том числе таких...


В том числе таких он расшифровывает очень просто, с помощью функции GetAtomName.

dmk ©   (04.04.17 20:48) [4]

http://mdb-blog.blogspot.ru/2017/02/download-microsoft-spy-140-2016-06-20.html


D7   (04.04.17 21:23[6]

Spy++ да, в составе, но и отдельно скачать вполне можно, сам по себе спай вроде как бесплатен. Хотя вот теперь не уверен))

Просто спай показывает: "Окну пришло сообщение WM_PAINT" - тут как бы ещё ладно, допустим как-то так:
If ( Msg = WM_PAINT ) Then Log.Add( ' Message Received: WM_PAINT ' );
Но вот как он определяет имя когда сообщение пользовательское: "Окну пришло сообщение WM_MY_SUPER_USER_MESSAGE" ??


D7   (04.04.17 21:24[7]

ой... Пока писал уже ответили... Вот оно как! Спасибо огромное!


D7   (04.04.17 22:32[8]

Не-а, GetAtomName() чёта не прокатила, а зато вот эта работает: GetClipboardFormatName()


Игорь Шевченко ©   (05.04.17 10:43[9]

GlobalGetAtomName


Игорь Шевченко ©   (05.04.17 10:44[10]

program EnumAtomsSample;

{$APPTYPE CONSOLE}

uses
 Windows,
 SysUtils;

function GetAtomName(nAtom: TAtom): string;
var n: Integer;
   tmpstr: array [0..255] of Char;
begin
 n := GlobalGetAtomName(nAtom, PChar(@tmpstr[0]), 256);
 if n = 0 then
   Result := ''
 else
   Result := tmpstr;
end;

procedure EnumAtoms;
var i: Integer;
   s: string;
begin
 for i := MAXINTATOM to MAXWORD do
   begin
     s := GetAtomName(i);
     if (s <> '') then WriteLn(s);
   end;
end;

begin
 try
   EnumAtoms;
 except
   on E: Exception do
     Writeln(E.ClassName, ': ', E.Message);
 end;
end.


dmk ©   (05.04.17 18:42[11]

>http://mdb-blog.blogspot.ru/2017/02/download-microsoft-spy-140-2016-06-20.html
Пиратка. Не дружу я с ними ;)


D7   (07.04.17 18:27[12]

> [9]

Не-не) Я ж проверял прежде чем писать) И этот код мне где-то Гугл выдавал даже.
У меня в таблице три колонки, от нуля до MAXWORD:

* GetAtomName() - всегда пустое (в процессе приложения VCL, что как по мне немного странно, глобальные-то оно создаёт, а локальные совсем нет?).
* GlobalGetAtomName() - ожидаемо что-то выдаёт, но не то. Во всяком случае под Win7 и WinXP.
* GetClipboardFormatName() - а вот это выдаёт имена сообщений созданных через RegisterWindowMessage().

> Пиратка. Не дружу я с ними ;)

У меня было две версии Студии, сейчас уже нету, но две версии Spy++ и сейчас лежат под рукою, просто как утилиты, лицензий не просят.


D7   (07.04.17 18:31[13]

У себя вот такие сообщения нашёл:
* 'TaskbarCreated'
* 'TaskbarButtonCreated'
* 'WM_ATLGETHOST'
* 'WM_ATLGETCONTROL'
* 'WM_HTML_GETOBJECT'
* 'WM_WINMGR'
Местами были ещё какие-то странные, их не привожу.


DevX   (10.04.17 15:53[14]

How to list custom messages (RegisterWindowMessage)?

Eduardo A. Morcillo:

> RegisterWindowMessage returns a value in the range &HC000 through &HFFFF.
> I remembered other 2 functions that returns values in the same range: AddAtom, RegisterClipboardFormat,
> and I thought that, maybe, RegisterWindowMessage uses one of them to register the message.
> GetAtomName returns the name of an atom and GetClipboardFormatName returns the name of the clipboard format.
> So I just test them. GetAtomName failed, but GetClipboardFormatName returned the correct name.


Игорь Шевченко ©   (10.04.17 17:24[15]

https://groups.google.com/forum/#!topic/microsoft.public.vc.mfc/-D98EsgOSto

"For example, registered clipboard formats are stored in an internal atom
table used by the system. An application adds atoms to this atom table using
the RegisterClipboardFormat function."
So this table is not accessible through GlobalGetAtomNAme. But it happens to
be shared with registered messages.

Actually, it seems that RegisterWindowMessage and RegisterClipboardFormat
are the *same* function, or point to the same entry in user32.dll.

Maybe all this is undocumented behavior that cannot be relied up for future
version of Windows...


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо