![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| KlenV |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.12.2011 Репутация: нет Всего: нет |
Здравствуйте уважаемые граждане программисты.
Пишу приложение без VCL возникла необходимость посылки сообщений между приложениями при помощи WM_COPYDATA. В проесте с VCL всё работает замечательно а без VCL фигня какае-то. Причем в обработчике сообщений клиента сообщение WM_COPYDATA: принимается нормально а структура MsgV: TWMCopyData; остаётся пустой. Уже всю голову сломал. Сервер , отсылаю так.
Принимаю так :
Это сообщение отредактировал(а) MetalFan - 29.12.2011, 09:10 |
||||||
|
|||||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 1 Всего: 11 |
Код, приведенный выше не смотрел (думаю понятно почему), но само по себе WM_COPYDATA прекрасно работает, если все сделать, как написано в MSDN.
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
что за фантазия по объявлению оконной процедуры??? -------------------- There are always someone smarter than you... |
|||
|
||||
| KlenV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.12.2011 Репутация: нет Всего: нет |
В чём именно выражается фантазия? Если только в этом var MsgV1:TWMCopyData ? Это там действительно не нужно.
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
а зачем было тогда это выкладывать, раз это не нужно? И что за непонятно что делающая procedure WMCopyData(var Msg: TWMCopyData); ? -------------------- There are always someone smarter than you... |
|||
|
||||
| KlenV |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.12.2011 Репутация: нет Всего: нет |
Эта процедура вызывается в обработчике событий , вот отсюда:
И поидее всё работает нормально , за исключением того что в момент события WM_COPYDATA: структура:
Абсолютно пуста и ожидаемых данных (строки и её размера) туда не заносятся. Этот вопрос и есть проблема ,который я никак не могу решить. Что касаемо var MsgV1:TWMCopyData во входящих параметрах , то в попытке поиска решения занёс её туда, потом забыл выкинуть перед постом на форуме , за что прошу прощения если она ввела в заблуждение , но есть эта переменная там или её нет в данный момент на ход ситуации (на мой взгляд) не имеет никакого значения. Добавлено через 2 минуты и 11 секунд В процессе работы сообщение WM_COPYDATA: в клиент приходит и выше описанная процедура срабатывает , но структура MsgV: TWMCopyData пустая. Добавлено через 9 минут и 6 секунд Фильтр UIPI здесь тоже не причем ,так как код был проверен и в XP и в Win 7 , результат одинаковый. Использование WM_COPYDATA в стандартных проектах , то есть с VLC где не надо писать свой обработчик работает на ура и без всяких проблем. |
||||||
|
|||||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
прости, но я в упор не вижу, где ты извлекаешь данные, что пришли в lParam с сообщением WM_COPYDATA
-------------------- There are always someone smarter than you... |
|||
|
||||
| KlenV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.12.2011 Репутация: нет Всего: нет |
Да, действительно проблема в этом. По не знанию рыл не там. Такой вопрос, а как вытянуть эту структуру из lParam ?
|
|||
|
||||
| Coder |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 1 Всего: 11 |
|
||||
|
|||||
| KlenV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.12.2011 Репутация: нет Всего: нет |
Блин, ребята, спасибо вам огромное,что откликнулись! Всё заработало!
Объявления данной функции вообще можно избежать , тут я действительно на фантазировал.
И если не сложно , ответьте на один вопрос, почему в данный момент используется структура PCopyDataStruct , вовсех примерах , которые мне попадались , везде TWMCopyData используется , я вокруг неё и прыгал , что было не правильно? ПыСы С наступающим Новым Годом!!!!!! Это сообщение отредактировал(а) KlenV - 30.12.2011, 10:19 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Почитай описание параметров сообщения WM_COPYDATA, там в wParam указатель на запись приходит.
Кстати, а написание окна на WinApi действительно необходимо? может хватит вполне VCL-ного AllocateHWND/DeallocateHWND? Это сообщение отредактировал(а) MetalFan - 30.12.2011, 13:35 -------------------- There are always someone smarter than you... |
|||
|
||||
| KlenV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.12.2011 Репутация: нет Всего: нет |
Спасибо , обязательно почитаю. Да не то что уж прям необходимо, просто задание такое в институте поставили ,что именно окно WinApi и ничего другого.
|
|||
|
||||
![]()
|
| Правила форума "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. |