Send Message Problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
carsoft
Üye
Mesajlar: 138
Kayıt: 01 Ağu 2014 12:27

Send Message Problemi

Mesaj gönderen carsoft »

Edit1 içindeki yazıyı gönderiyorum ama sadece ilk harfi alıyor.

Gönderme

Kod: Tümünü seç

var
DataStruct : CopyDataStruct; // data gönder
begin
  DataStruct.dwData := 0;
  DataStruct.cbData := length(edit1.Text)+1;
  DataStruct.lpData := pchar(edit1.Text);

  SendMessage(FindWindow('TForm1', 'Deneme'),
                          WM_CopyData, Form1.handle, integer(@DataStruct));

end;
almak için

Kod: Tümünü seç

procedure CopyData(var Msg: TWMCopyData); message wm_CopyData;

Kod: Tümünü seç

procedure TForm1.CopyData(var Msg: TWmCopyData);
var sMsg: String;
begin
  if IsIconic(Application.Handle) then
    Application.Restore;
  sMsg := PChar(Msg.CopyDataStruct.lpData);
  Label1.Caption := sMsg;
end;
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Send Message Problemi

Mesaj gönderen SimaWB »

Birincisi Delphi versiyonu önemli. Unicode desteği var mı yok mu?
İkincisi gönderim esnasında cbData'da +1 neden?
There's no place like 127.0.0.1
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Send Message Problemi

Mesaj gönderen xxxjedixxx »

Merhaba,

Eğer unicode ise gönderimdeki ilgili satırı aşağıdaki gibi değiştirirsen çalışacaktır.

DataStruct.cbData := length(edit1.Text) * SizeOf(WideChar);
carsoft
Üye
Mesajlar: 138
Kayıt: 01 Ağu 2014 12:27

Re: Send Message Problemi

Mesaj gönderen carsoft »

Evet Gönderim Unicode destekli Delphi 10.1 Berlin sürümünden Delphi 7 ' ye gönderiyorum

Degiştim ama yine olmadı

Kod: Tümünü seç

DataStruct.cbData := length(edit1.Text) * SizeOf(WideChar);
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Send Message Problemi

Mesaj gönderen xxxjedixxx »

Delphi7'den okuyorsan alım kısmındaki satırı aşağıdaki ile değiştir.

sMsg := PWideChar(Msg.CopyDataStruct.lpData);

Gönderim kısmı için söylediğim değişiklik hala geçerlidir.

DataStruct.cbData := length(edit1.Text) * SizeOf(WideChar);
Cevapla