WM_COPYDATA ile dll'den exe'ye bilgi gönderilemiyor

Bir dll'den bir exe'ye bir kaydı göndermeye çalışıyorum.

Dll yazdığım bir Outlook eklentisi, exe benim ana uygulama.

kaydını bu örneği kullandım > exe'den exe'ye, ama ben aynısını dll'den exe'ye yapmaya çalıştığımda işe yaramıyor.

Not: lütfen bağlantıyı açın ve kullandığınız kodu bulabilirsiniz. Bu kod bir EXE gönderici uygulaması ve bir EXE gönderici uygulaması içindir. Bu çalışıyor.

Gönderenin kodunu bir dll içine koyarsam, örnek artık işe yaramıyor.

Bir çözüm önerebilir misin?

2
Bir kayıt, sorunu güncelledim.
katma yazar LaBracca, kaynak
Asıl mesele o kadar çok ayrıntıya rağmen açık bir soru yazmamdan dolayı açık: Ben kullandığım örneğe bir link koydum, böylece kullandığım kodu bulabilirim. Bu örnek EXE için bir EXE'dir. Ben sadece EXE EXE yaptım ve mesajları gönderemiyorum. Orijinal örnek ve yaptığım EXE arasındaki EXE arasındaki tek fark EXE için EXE olarak değiştirildiğinden, bu sizin çözümünüzün bazılarında tetikleyici olabilir. Bu yüzden benim sorum kasten böyle yazılmıştır.
katma yazar LaBracca, kaynak
-1. "Çalışmıyor" ne demektir?
katma yazar Rob Kennedy, kaynak
Mesajları "gönderemezsiniz"? SendMessage uygulamasının başarısız olduğunu mu söylüyorsunuz? Başarısız olursa, bir hata kodu döndürmelidir. Bunun için kontrol ettin mi? Doğru pencere tanıtıcısını bulduğunuzdan emin misiniz? Kodunuzu hata ayıklayıcısını kullanarak adım attınız ve her adımda, her hesaplama ve işlev çağrısı, önceden bildiğiniz değeri tam olarak vermiş oldu mu? Bunu yapana kadar, bu problem üzerinde çalışmayı bitirmedin. Ne olmasını bekledin ve ne oldu?
katma yazar Rob Kennedy, kaynak
Çalışmayan kodu gönderin. Kayıt beyanı HAYIR yardımdır.
katma yazar Warren P, kaynak
TRecord nedir?
katma yazar Andreas Rejbrand, kaynak
WM_COPYDATA kodunu ve aldığı kodu gösteren kodu göstermeniz gerekir. Ayrıca "işe yaramaz" ın ne anlama geldiğini açıklamanız gerekir.
katma yazar David Heffernan, kaynak
Basit bir dizeyle başlarım. 'Merhaba, dünya!' Gönderemezseniz, kayıtla ilgili herhangi bir tartışma ilgisizdir.
katma yazar Chris Thornton, kaynak

1 cevap

Bir dizgeyle çalışabildiğinizi varsayacağınızı varsayarak (görülebilen), sadece bir dizgeye (CSV, muhtemelen garip bir sınırlayıcı kullanarak), bir dizge (PAnsiChar veya PWideChar) olarak gönderebilirsiniz. Diğer uçtaki rekoru geri alır. Bu istediğin kadar zarif değil, ama kesinlikle, olumlu, işe yarayacak.

0
katma
Cevabınız için teşekkürler ama benim sorunum veri göndermiyor, bir exe çalışırken bir dll çalışmama nedenidir.
katma yazar LaBracca, kaynak
Kayıt çok kolaydır, string [n] ile. Sadece SizeOf() kullanmanız yeterlidir ve her şey yolunda olmalıdır.
katma yazar David Heffernan, kaynak