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

Я намагаюся відправити record з одного dll в один exe.

DLL - надбудова Outlook, яку я написав, EXE - це моє основне додаток.

Я використав цей приклад , щоб успішно надіслати запис з exe в exe, але коли я намагаюсь зробити те ж саме з DLL, щоб EXE це не працює.

Примітка. Будь ласка, відкрийте посилання, і там ви знайдете код, який я використовую. Цей код призначений для програми EXE-відправника та програми EXE-відправника. Це працює

Якщо я поклав код відправника всередині dll, приклад більше не працює.

Не могли б Ви запропонувати рішення?

2
Запис, я оновив питання.
додано Автор LaBracca, джерело
Несправедливі потоки, оскільки я написав це питання без особливої ​​деталізації, але ясно: я поклав посилання на приклад, який я використовував, так що там можна знайти код, який я використовую. Цей приклад - EXE-EXE. Я просто зробив DLL для EXE, і я не можу відправляти повідомлення. Оскільки тільки різниця між початковим прикладом і тим, що я зробив, це EXE-EXE, змінена на DLL на EXE, це може спричинити в деяких з вас ідею для рішення. Ось чому моє запитання було навмисно написано таким чином.
додано Автор LaBracca, джерело
-1. Що означає "не працює"?
додано Автор Rob Kennedy, джерело
Ви "не можете відправляти повідомлення"? Ви маєте на увазі, що помилка SendMessage ? Якщо це не вдасться, він повинен повернути код помилки. Ви перевірили це? Ви впевнені, що знайшли вірно ручку вікна? Ви пройшли через свій код за допомогою налагоджувача, і на кожному кроці кожен розрахунок і виклик функції дали точно значення, яке ви заздалегідь знали, що це дасть? Доки ви цього не зробите, ви не закінчите працювати над цією проблемою. Що ви очікували, що сталося, а що сталося?
додано Автор Rob Kennedy, джерело
Опублікуйте код, який не працює. Заява на реєстрацію - ніяка допомога.
додано Автор Warren P, джерело
Що таке TRecord ?
додано Автор Andreas Rejbrand, джерело
Вам потрібно показати код, який надсилає WM_COPYDATA , і код, який він отримує. Ви також повинні пояснити, що означає "це не працює".
додано Автор David Heffernan, джерело
Я починаю з простого рядка. Якщо ви не можете надіслати "Hello, world!", То будь-яке обговорення запису не має значення.
додано Автор Chris Thornton, джерело

1 Відповіді

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

0
додано
спасибі за відповідь, але моя проблема не надсилає дані, тому вона не працює з DLL, тоді як з EXE це працює.
додано Автор LaBracca, джерело
Запис також досить простий за допомогою string [n] . Просто потрібно використовувати SizeOf() , і все має бути добре.
додано Автор David Heffernan, джерело