powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
12 сообщений из 12, страница 1 из 1
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33022282
Дмитрий15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мучаю Excell - нашел в хелпе вот такой кусочек кода, который никак умом понять не могу. Разъясните плиз.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
    Const WM_USER =  1024 
    Dim hWnd As Long
' If Excel is running this API call returns its handle.
    hWnd = FindWindow("XLMAIN",  0 )
    If hWnd =  0  Then    ' 0 means Excel not running.
        Exit Sub
    Else
    ' Excel is running so use the SendMessage API
    ' function to enter it in the Running Object Table.
        SendMessage hWnd, WM_USER +  18 ,  0 ,  0 
    End If
End Sub


---Женщины и виски размягчают мозг.
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33022347
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запущен Excel или нет.
???
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33024669
Дмитрий16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений1234-5Запущен Excel или нет.
???
Что за странные константы WM_USER+18??
Как я могу узнать что такое 18?
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33024695
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий16 Евгений1234-5Запущен Excel или нет.
???
Что за странные константы WM_USER+18??
Как я могу узнать что такое 18?

правильнее всего -
позвонить/написать разработчикам Excel
и запросить у них список определенных разрабочтиками номеров
сообщений и их описания для управления работой внутренними окнами Excel


а вообще Вам комментарий поставили
' function to enter it in the Running Object Table.


если не доверяете - просто посмотрите что получится.
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33026174
Дмитрий15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вообще Вам комментарий поставили
' function to enter it in the Running Object Table.

Я не очень понял что это такое (enter it in the Running Object Table)
Просвяти если знаешь?
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33026190
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чем здесь аксес?
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33026246
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://support.microsoft.com/default.aspx?scid=kb;en-us;147573

P.S. На msdn.microsoft.com работает поиск
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33026402
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий16Что за странные константы WM_USER+18??
Как я могу узнать что такое 18?
Эти константы описаны в технической документации на эксель и они меняются от версии к версии. Во всяком случае имеют право меняться.

В данном примере Excel принудительно просят зарегестрироваться в ROT. Или ты не знаешь что такое ROT?
PSDK
running object table (ROT)
A globally accessible table on each computer that keeps track of all COM objects in the running state that can be identified by a moniker. Moniker providers register an object in the table, which increments the object's reference count. Before the object can be destroyed, its moniker must be released from the table.
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33029353
Дмитрий16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох ПозорныйПри чем здесь аксес?
А это просто кусок хелпа от access про работу а excell.
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33031622
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Дмитрий16 : понятно стало,зачем этот код нужен?
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33060879
Дмитрий15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Sh2 Дмитрий16 : понятно стало,зачем этот код нужен?
Насколько я понял - это обход косячности экселя, который при запуске сам себя не регистрирует в таблицах....
Видимо от этого и косяки с тем что эксел во многих случаях остается в памяти даже после закрытия (при работе с ним из другой программы)
...
Рейтинг: 0 / 0
Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
    #33063286
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий15Насколько я понял - это обход косячности экселя, который при запуске сам себя не регистрирует в таблицах....
Видимо от этого и косяки с тем что эксел во многих случаях остается в памяти даже после закрытия (при работе с ним из другой программы)
Нельзя сказать что это косячность... Это немножко другой подход к реализации.
Не регестрирование самого себя в ROT при независимом запуске это дело хорошее и полезное. Потому что в большинстве случаев Эксель запускается все же самостоятельно а не через COM. Но в итоге все же возникает нужда в этом трюке если хочешь получит COM-доступ к Экселю когда одна копия Экселя уже висит. Иначе получится двойной запуск.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Странное обращение (что такое "SendMessage hWnd, WM_USER + 18, 0, 0"?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]