Не удается отправить информацию из dll в exe с помощью WM_COPYDATA

Я пытаюсь отправить запись из одной DLL в одну exe.

DLL - это надстройка Outlook, которую я написал, exe - мое основное приложение.

Я использовал этот пример , чтобы успешно отправить запись от exe до exe, но когда я пытаюсь сделать то же самое с dll на exe, это не работает.

Примечание: пожалуйста, откройте ссылку, и там вы найдете код, который я использую. Этот код предназначен для приложения-отправителя EXE и приложения-отправителя EXE. Это работает.

Если я поместил код отправителя внутри dll, этот пример больше не работает.

Не могли бы вы предложить решение?

2
Запись, я обновил вопрос.
добавлено автор LaBracca, источник
Нехорошие downvotes, так как я написал вопрос не так подробно, но ясно: я поместил ссылку на пример, который я использовал, чтобы там найти код, который я использую. Этот пример - EXE-EXE. Я просто сделал DLL для EXE, и я не могу отправлять сообщения. Поскольку единственное различие между исходным примером и тем, что я делал, это EXE-EXE, измененный в DLL в EXE, это может вызвать у некоторых из вас идею для решения. Вот почему мой вопрос был специально написан таким образом.
добавлено автор LaBracca, источник
-1. Что означает «не работает»?
добавлено автор Rob Kennedy, источник
Вы «не можете отправлять сообщения»? Вы имеете в виду, что SendMessage терпит неудачу? Если он терпит неудачу, он должен вернуть код ошибки. Вы проверили это? Вы уверены, что нашли правильный дескриптор окна? Вы перешли через свой код с помощью отладчика, и на каждом шаге каждый вызов вычисления и функции дал точно то значение, которое вы знали заранее, что оно даст? Пока вы этого не сделали, вы не закончили работу над этой проблемой. Что вы ожидали, и что произошло вместо этого?
добавлено автор Rob Kennedy, источник
Опубликуйте код, который не работает. В записи записи нет справки.
добавлено автор Warren P, источник
Что такое TRecord ?
добавлено автор Andreas Rejbrand, источник
Вам нужно показать код, который отправляет WM_COPYDATA , и код, который он получает. Вы также должны объяснить, что означает «это не работает».
добавлено автор David Heffernan, источник
Я бы начал с простой строки. Если вы не можете отправить «Привет, мир!», То любое обсуждение записи не имеет значения.
добавлено автор Chris Thornton, источник

1 ответы

Предполагая, что вы можете заставить его работать со строкой (что еще предстоит выяснить), вы можете просто преобразовать свою запись в строку (CSV, возможно, используя странный разделитель типа ~), отправить в виде строки (PAnsiChar или PWideChar), затем de-serialze обратно в запись на другом конце. Это не так элегантно, как то, что вы хотите, но абсолютно, положительно, будет работать.

0
добавлено
спасибо за ответ, но моя проблема не в отправке данных, поэтому она не работает из dll, а exe работает.
добавлено автор LaBracca, источник
Запись также довольно проста: string [n] . Просто нужно использовать SizeOf() , и все должно быть хорошо.
добавлено автор David Heffernan, источник
Delphi & Lazarus
Delphi & Lazarus
274 участник(ов)

Чат про Delphi и Lazarus