trect ile caption'a yazı yazma sorunu.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen ertank »

Görüntü ile olması gereken anlamında sormak istemiştim.
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen Shou »

Tamam işte hocam görüntü ile gösterdim hatalı olan şeyi ve nasıl olması gerektiğini anladınız mı ne demek istediğimi?
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen ertank »

Ücretsiz AlphaControls Lite sürümünü indirip kurun.
http://www.alphaskins.com/dwnld.php

Kurduktan sonra form üzerine bir tane TSkinManager ekleyin.
SkinDirectory özelliğini kurulumu yaptığınız yerdeki skin dizinini gösterecek şekilde ayarlayın.
SkinName kısmından bir tane isim seçin.
Ardından form üzerine bir tane TsTitleBar nesnesi ekleyin.
Items özelliğini seçip bir tane Item ekleyin.
Eklediğiniz Item'ı seçip ObjectInspector üzerinde Align kısmını istediğiniz şekilde ayarlayın
Style özelliğini bsInfo olarak ayarlayın.
Caption özelliğine istediğiniz ifadeyi yazın.
FontData özelliklerini istediğiniz gibi ayarlayın.

Uygulamayı çalıştırdığınız zaman istdiğinizi elde etmiş olmanız gerekli.
Dosya ekleri
FomrCaption.png
FomrCaption.png (552 Byte) 2696 kere görüntülendi
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen Shou »

Hocam burada unuttuğunuz birşey var.

Ben bunu kendi programıma değil başka bir programa yapıyorum findwindow ile farkındaysanız.

Yani program benim değil ve open source yok.

??
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen ertank »

Diğer uygulamanın caption bilgisini değiştirmek yeterli olmuyor mu?

Kod: Tümünü seç

procedure UygulamaBasligiDegistir(const MevcutBaslik, YeniBaslik: string);
var
  MyHandle: THandle;
begin
  MyHandle := FindWindow(nil, PWideChar(MevcutBaslik));
  SetWindowText(MyHandle, YeniBaslik);
end;

procedure TForm15.Button1Click(Sender: TObject);
begin
  UygulamaBasligiDegistir('UO', 'Yeni başlık');
end;
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen Shou »

Hocam zaten ben öyle yapmaya çalışıyorum ama o zaman şöyle problem oluyor diyelim aynı uygulama 3 tane açık bu sefer karışıklık oluyor 3 üne birden aynı şeyi yazıyor yani benim yapmak istediğim olay tek kendisine yazsın olayı.

Ben dll kullanıyorum inject ediyorum bu sorunu nasıl çözeceğimi bilmiyorum.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen ertank »

Ben hala sorunun ne olduğunu tam anlayabilmiş değilim.

Test ettiğim zaman diğer uygulamadan 3 tane çalışıyor ise başlık değişikliği sadece bir tanesinde oluyor. Buton bir daha tıklandığı zaman bu defa ikinci uygulamanın adı değişiyor.

Aynı başlık ifadesi kullanılmak istenilmiyor ise kendi uygulamanız içinde TStringList ve TArray<THandle> kullanarak diğer uygulamaların başlığının ne olarak değiştirildiğini ve Handle bilgisini saklamak mümkün. Görsel ayırt edici olması için bir sayaç kullanarak her bir buton tıklandığında diğer uygulamaların başlığının sonuna farklı rakam eklemekte mümkün.

Son verilen örnek kodu bir DLL içinde kullanmakta mümkün.
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen Shou »

Ama DLL içinde kullandığınızda 3 uygulama açık diyelim ben 3 ünü yan yana koyuyorum 3'üne aynı şeyi yazıyor?
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen ertank »

Shou yazdı:Ama DLL içinde kullandığınızda 3 uygulama açık diyelim ben 3 ünü yan yana koyuyorum 3'üne aynı şeyi yazıyor?
DLL içindeki ilgili kodu paylaşabilir misiniz?
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen Shou »

Kod: Tümünü seç

procedure caption; 
var 
prochwnd:hwnd; 
begin 
prochwnd:=findwindow('TUO',nil);
setwindowtext(prochwnd,pchar('YENİ CAPTİON'));
end;
Ben Dll'de böyle kullanıyorum ama aynı uygulama 3 tane açık'sa 3'üne birden yazıyor.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: trect ile caption'a yazı yazma sorunu.

Mesaj gönderen ertank »

1- Gördüğüm kadaryla FindWindow fonksiyonunun parametreleri benim verdiğim örnekten farklı.
2- DLL prosedür adını "Caption" dışında bir isim vermekte fayda var.

Bu DLL prosedürü sadece bir tane uygulamanın başlık ismini değiştirir. Tüm çalışan diğer uygulamaların bir defada başlıklarının değiştirilmesi sorunu "caption" prosedürünün çağırıldığı yerde/yerlerde aranmalı.

Kendiniz de yeni bir uygulamada bu kodu buton tıklamasına yerleştirip aynı anda 3-4 diğer uygulamadan çalışsa dahi sadece bir uygulamanın başlığının değiştiğini test edip sorunun bu kod ile ilgili olmadığını görebilirsiniz.
Cevapla