Exe'den Exe'ye veri aktarımı...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Exe'den Exe'ye veri aktarımı...
Arkdaşlar merhaba;
Programıma yeni bir şeyler ekliyorum ama bir yere geldim yine takıldım. Sorun şu; d5'te yaptığım bir projem var bu projede bulunan tckimlik alanına d7'de yapılan bir tcno sorgulama programından benim programımdaki d5'te yaptığım programımın içindeki formun bir edit'ine o çıkan tckimlik sonucunu aktarmak istiyorum bir buton yardımı ile olabilir yada başka bir şekilde. Bunu nasıl sağlayabilirim acaba.
Bu arada yazmayı unuttum d7'deki o exe'yi kendi programım içerisinden çağırıcam...
Yardımlarınız için şimdiden çok tşk ediyorum. Arkdaşlar...
Programıma yeni bir şeyler ekliyorum ama bir yere geldim yine takıldım. Sorun şu; d5'te yaptığım bir projem var bu projede bulunan tckimlik alanına d7'de yapılan bir tcno sorgulama programından benim programımdaki d5'te yaptığım programımın içindeki formun bir edit'ine o çıkan tckimlik sonucunu aktarmak istiyorum bir buton yardımı ile olabilir yada başka bir şekilde. Bunu nasıl sağlayabilirim acaba.
Bu arada yazmayı unuttum d7'deki o exe'yi kendi programım içerisinden çağırıcam...
Yardımlarınız için şimdiden çok tşk ediyorum. Arkdaşlar...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
S.A.
Çözüm karakter gönderme olabilir;
NotPad'e karakter gönderen fonksiyon bu, biraz oynarsan işine yarayabilir.
(kodlar ç-alıntıdır.)
Kolay gelsin.
Çözüm karakter gönderme olabilir;
NotPad'e karakter gönderen fonksiyon bu, biraz oynarsan işine yarayabilir.
Kod: Tümünü seç
var
g,d:integer;
begin
{uygulamanın ana penceresini bul}
g:=FindWindow('Notepad',nil);
{uygulama penceresindeki text box'ı bul}
d:=ChildWindowFromPoint(g,point(50,50));
{karakteri gönder}
SendMessage(d,WM_CHAR,Ord('A'),0);
end;
Kolay gelsin.
Re: Exe'den Exe'ye veri aktarımı...
paramcount ve param str ile komut satırından zahmetsizce veri aktarabilirsin.Biltes yazdı:Arkdaşlar merhaba;
Programıma yeni bir şeyler ekliyorum ama bir yere geldim yine takıldım. Sorun şu; d5'te yaptığım bir projem var bu projede bulunan tckimlik alanına d7'de yapılan bir tcno sorgulama programından benim programımdaki d5'te yaptığım programımın içindeki formun bir edit'ine o çıkan tckimlik sonucunu aktarmak istiyorum bir buton yardımı ile olabilir yada başka bir şekilde. Bunu nasıl sağlayabilirim acaba.
Bu arada yazmayı unuttum d7'deki o exe'yi kendi programım içerisinden çağırıcam...
Yardımlarınız için şimdiden çok tşk ediyorum. Arkdaşlar...
-
- Üye
- Mesajlar: 508
- Kayıt: 30 Oca 2004 10:49
Selam,
Arkadaşların önerdiği çözümler belki uygulanabilir, ama hepsinde de ufak tefek de olsa sıkıntılar var.
@ulu coder
Aslında en uygun çözüm bu, ama Edit kutusunun yerini değiştirdiğinizde (programda değişiklik yaptığınızda) her iki programı da güncellemeniz gerekiyor. Anlayacağınız genel bir çözüm değil.
@ikut
Exe'nin ilk açılışı için uygun bir çözüm olabilir, ama çalışan bir exe için işe yaramayacaktır.
@shadowmann
Eğer program firebird kullanıyorsa olabilir, ama sırf bunun için projeye firebird eklemek hem doğru olmaz, hem de akıllıca.
Bence en uygun çözüm Windows Message Sistemini kullanmak. Windows'un buna benzer işlemler için tanımladığı bir mesaj yapısı var zaten. WM_COPYDATA. Aşağıda mesajı gönderecek olan programın kodlarını veriyorum.
Burada dikkat edersen belirli bir programa WM_COPYDATA ile bilgi gönderdik. Şimdi de onu almaya geldi. Aşağıdaki kod da mesajı alan programa yazılmalıdır.
Öncelikle mesajı yakalayacak olan fonksiyonu tanımlayalım.
Şimdi de fonksiyonu yazalım.
WParam ile sana mesajı gönderen pencereyi kontrol ediyorsun, çünkü bu mesajı başka programlar da gönderebilir. O zaman senin mesajı işlememen gerekiyor.
Kolay gelsin,
Bahadır Alkaç
Arkadaşların önerdiği çözümler belki uygulanabilir, ama hepsinde de ufak tefek de olsa sıkıntılar var.
@ulu coder
Aslında en uygun çözüm bu, ama Edit kutusunun yerini değiştirdiğinizde (programda değişiklik yaptığınızda) her iki programı da güncellemeniz gerekiyor. Anlayacağınız genel bir çözüm değil.
@ikut
Exe'nin ilk açılışı için uygun bir çözüm olabilir, ama çalışan bir exe için işe yaramayacaktır.
@shadowmann
Eğer program firebird kullanıyorsa olabilir, ama sırf bunun için projeye firebird eklemek hem doğru olmaz, hem de akıllıca.
Bence en uygun çözüm Windows Message Sistemini kullanmak. Windows'un buna benzer işlemler için tanımladığı bir mesaj yapısı var zaten. WM_COPYDATA. Aşağıda mesajı gönderecek olan programın kodlarını veriyorum.
Kod: Tümünü seç
procedure TForm1.btnGonderClick(Sender: TObject);
var
CopyData:COPYDATASTRUCT;
AText:string;
AHwnd:HWND;
begin
AText:='Gönderilmesi gereken metin';
//Bir şekilde programın handle değerini bulman gerekiyor
//Örnek olsun diye ulu coder'in kodunu yazıyorum
AHwnd:=FindWindow('Programın',nil);
CopyData.dwData := 0;
CopyData.cbData:=Length(AText) + 1;
GetMem(CopyData.lpData, Length(AText) + 1);
StrPCopy(PChar(CopyData.lpData), AText);
SendMessage(AHwnd, WM_COPYDATA, Handle, Integer(@CopyData));
FreeMem(CopyData.lpData);
end;
Öncelikle mesajı yakalayacak olan fonksiyonu tanımlayalım.
Kod: Tümünü seç
procedure OnGetMessage(var Msg:TMessage);message WM_COPYDATA;
Kod: Tümünü seç
procedure TForm2.OnGetMessage(var Msg: TMessage);
var
CopyData:PCOPYDATASTRUCT;
AHWND:HWND;
begin
AHWND:=FindWindow('Mesaj Gönderen Program', nil);
if (Msg.WParam = AHWND) then //Bu satırı test etmedim, cast yapman gerekebilir
begin
CopyData:=Pointer(Msg.LParam);
ShowMessage(PChar(CopyData.lpData));
Msg.Result:=1;
end;
end;
Kolay gelsin,
Bahadır Alkaç
Hocam cevaplarınız için herkese çok tşk ediyorum. Bahadır arkdaşımızın dediği gibi uyguladım ve sorun çözüldü herhangi bir değişikliğe gerek kalmadı. Canavar gibi yapıyor.
Helal olsun hocam... Hepiniz sağolasın...
Helal olsun hocam... Hepiniz sağolasın...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...