İki ayrı program arasında mesajlaşma

Başlatan z, 15 Mayıs 2015, 10:09:18

z

Thread ile ana program arasında mesajlaşabiliyorum.  Verilerin adreslerini yollayarak verilere de ulaşabiliyorum.

Fakat iki ayrı exe programda birisi diğerine mesaj attığında mesajı yakalıyorum.

Fakat mesajda yolladığım değişken adresinden okuma yapmaya kalktığımda illegal erişim yaptığıma dair uyarı alıyorum ve isteğim yerine getirilmiyor.

Programların birbirlerinin ram alanına sarkması engellenmiş. Zaten olması gereken de bu.

Peki programlarda kim isterse okusun yazsın gibisinden özel bir değişken tanımlayamaz mıyım?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Gökhan BEKEN

Visual studio'da "security devlopment life" diye bir ayar vardı(bu işe yaradığından emin değilim), ama delphi'de bilmiyorum.
Özel mesaj okumuyorum, lütfen göndermeyin.

Icarus

#2
Hayır tanımlanamaz.
Yapmak istediğin şeyin adın "Shared Memory Region".
Bunu ister bir DLL ile yaparsın, istersen dinamik olarak windows'dan isteyebilirsin. 2 Process arasında bunu kullanman için
Ya bir birlerinnin Object table'larını paylaşıyor olmaları lazım---> Bu durumda "Shared Memory" adresi ve paylaşım hakları "Handle" üzerinden bir birlerine aktarılabilir.
Ya hafıza bölgesine bir "global windows ADI" vermen lazım---> Bu durumda "bu ismi" bilen processler ismi kullanarak paylaşılmış bölgeye erişim sağlayabilirler.

FAKAT !!! herkes kafasına göre takılırsa büyük güzel bir "race condition"'un olur. Bunun olmaması içim erişim "politika/senkronizazyon/segmentasyon" gibi bir yöntemle hafıza regüle edilmelidir.

Ve son olarak Abicim bunları antik bir programlama diliyle uğraşarak yapacağına C'de yapsaydın hem çok örnek bulurdun hemde işin daha kolay olurdu.

ercan_t

merhaba,

tcp ile yapmak istermisin?
bir exe sadece 127.0.0.1 (0.0.0.0 değil)dinler ve soket haberleşmesi ile kolaylıkla haberleşebilirsiniz.

z

Millet işten kaçıyor. Normalde benim işim değildi bunlar.

Projeye başlarken yaparız ederiz boş ver Delphiyi biz C# da yazarız deniyordu. Kartlar bitti uygulama aşamasına geçeceğiz şimdi de yan çiziyorlar. Bize DLL ver vs demeye başladılar. Güvenli olan ve işi yapabileceğim ilk çözümle bu işten sıyrılmak istiyorum.

Şu anda aklıma en çok yatan ve en kolay yapabileceğim yöntem Mesajlaşarak (mesaj parametresi yollayarak) karşı tarafa istediğin bilgileri hazırladım ve dosyaya yazdım git oku diyeceğim.Verileri de mesaj yoluyla atacaktım ama neye elime atsam sorun çıkıyor. En iyisi bu şekilde uyarıyı mesajla, dataları da file ile aktarmak.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#5
activex Nesne yapmalısın. ben yaptım oldu.

mufitsozen

Alıntı yapılan: z - 15 Mayıs 2015, 11:18:45
Millet işten kaçıyor. Normalde benim işim değildi bunlar.

Projeye başlarken yaparız ederiz boş ver Delphiyi biz C# da yazarız deniyordu. Kartlar bitti uygulama aşamasına geçeceğiz şimdi de yan çiziyorlar. Bize DLL ver vs demeye başladılar. Güvenli olan ve işi yapabileceğim ilk çözümle bu işten sıyrılmak istiyorum.


sayin @z hocam size cozum icin bir oneride bulunmadan once sormak istedigim bir soru var.
Bu projenin vizyon sahibi(parayi odeyen kim?) yoksa sen onu yap, bizde bunu, daha sonra beraber para kazanalim gibi naif bir isbirligimi var(naif derken hic kimse sorumlu degil, kimsede oburunden fazla gayret gostermiyor, yada umurunda degil cunku herkesin zaten isi basindan askin ve sozle yapilan anlasmalar da oldugu gibi 'commitment' hic olmamis, siz ben soz verdim diye isi ciddiye almissiniz?)
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Icarus

@z: Usb aygıtı tam olarak nedir ? Hid mi ?

z

#8
Mufit hocam derdimi mesajla hallettim.

T2 Delphiyle öylesine bir Activex  projesi oluşturup içine baktım. Pek çok kere internetten indirdiğim yapıyı görünce çok sevindim. Sanırım elimdeki usb komponent de bu mantıkla hazırlanmış.

Kısa zamanda activex kullanabileceğimi sanmıyorum. Ama çok basit bir örnek olursa boş vakitlerimde kurcalamak isterim.

@Icarus

Evet HID. Ancak kullandığım programlama şekline raw programlama deniyordu galiba.

Cihaz klasik HID sorgulamalara cevap verir ama iş yapmaz. İş yapabilmesi için detaylarını benim bildiğim (kendi oluşturduğum soft protokol) dolayısı ile sadece benim yazabileceğim bir program.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Farukc

Shm kullanmak buradaki en mantıklı seçim. Sharde memory ile ram üzerinden haberleşme yapabilirsiniz. C# üzerinde nasıl yapılır bilmiyorum. İsterseniz farklı ipc yöntemleride var pipe vb.