Cevapla
 
Konu Araçları
Eski 26-02-06, 15:16 #1
ares1907 ares1907 çevrimdışı
Varsayılan Arkadaşlar lütfen yardım edin bana (findwindow)


Arkadaşlar delphi ile bir programın uzerinde ki edit kutusunun içeriğini okumak ve isdediğim gibi değiştirmek istiyorum bana yardım cı ola bilirmisiniz findwindow kullanarak oluyormuş ama bir turlu çozemedim ya lutfen yardımcı olun
__________________
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 27-02-06, 07:40 #2
vqhyper vqhyper çevrimdışı
Varsayılan Cvp: Arkadaşlar lütfen yardım edin bana (findwindow)


//forma 3 buton 1 panel üzerine edit kontrolu forma bitane edit kontrolu ve bide listbox koyyoruz
procedure TForm1.Button1Click(Sender: TObject);
begin
{edit kontrolünün handle ını bulmak için ilk önce onun sahibi olan kontrolün handle ını bulmamız lazım edit kontrolümüzün sahibi panel kontrolüdür ancak onunda sahibi formumuzdur.
yani ilk olarak formun handle ı bulunacak bunun içinde findwindow fonksiyonunu kulanıcağız findwindow fonksiyonu bizden 2 değer ister ilk değer Classname yani sınıf ismi
2. değer ise windowname=windowsdaki adı. bu adı ve sınıf ismine delphi\bin\ws32.exe programı ile erişebilirsin. programda önce aradığın edit kontolünün sahibi
olan programı seç daha sonra Spy menusunde opendetail var ona tıkla ordaki window text controlun adı class name ise sınıf ismi oluyor. ,
biz kendi programımızda aradıgımız için aşağıdaki değerleri giriyoruz Not: eğer window text de bişi yazmıyosa veya sen sınıf sadece ismini biliyorsan
kontrolün ismi nil atayıp sadece class ismini girebilirsin eğer aynı sınıfa sahip başka kontrol yoksa istediğin kontrolün handle ini alırsın.}

formhandle:=FindWindow('TForm1','Form1');
// formhandle:=FindWindow('TForm1',nil); da olabilirdi ama yukardaki kod daha güvenilir

{sıra geldi panel in handle inin bulunmasına panel bi alt kontroldür sahibi form dur alt kontrollerin handle ini bulmak için findwindowex fonksiyonu kulanılır
aldığı değerler panel in sahibinin handle ı(formhandle) ,2 paremetre 0 olcak ,aradığımız kontrolün sınıf ismi ve windowsdaki adı
ana kontrol,aradıgımız kontrolun sahibi,aradıgımız kontrolun class ismi ve Name özelliğindeki değer }

panelhandle:=FindWindowex(formhandle,0,'TPanel','P anel1');
{ son olarakta panel in handle ini bulduğumuz gibi edit kontrolümüzünde handle ini buluyoruz}

edithandle:= FindWindowex(panelhandle,0,'TEdit','Edit1');
{sıra geldı edit kontrolündeki yazıyı almıya ve değiştirmeye bunun için message }

end;

procedure TForm1.Button2Click(Sender: TObject);

begin
{ilk önce handle ini bulduğumuz edit1 kontrolündeki yazıyı listbox a ekliyelim }
[COLOR="Blue"]//edit deki yazının uzunlugunu alalım
yaziuzunlugu:= sendmessage(edithandle,WM_GETTEXTLENGTH,0,0);
yaziuzunlugu:=yaziuzunlugu+1;
//hafızada yazi değişkenimiz için yazı uzunlugu kadar yer ayıralım
Getmem(yazi,yaziuzunlugu);
// edit kontrolundeki yazıyı yazi degiskenimize aktaralım
sendmessage(edithandle,WM_GETTEXT,yaziuzunlugu+1,i nteger(yazi));
//yazi değişkenini listbox a ekliyelim
listbox1.Items.Add(string(yazi));
// hafızayı temizleyelim
freemem(yazi,yaziuzunlugu);



end;

procedure TForm1.Button3Click(Sender: TObject);
begin
// yazi değişkenine edit2nin texini atıyalım
yazi:=pchar(edit2.text);
// edit kontrolünün textine yazi değişkenini atıyalım
sendmessage(edithandle,WM_setTEXT,yaziuzunlugu,int eger(yazi));
end;

// benimde fazla bilgim yoktu anlatımdada pek iyi değilim ama umarım işine yarar daha iyi bi açıklama gelene kadar hiç değilse
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz

Konu Araçları

Gönderme Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
Smiley Açık
[IMG] kodu Açık
HTML kodu Kapalı



Tüm saatler GMT +3. Şuan saat: 14:16
(Türkiye için artık GMT +3 seçilmelidir.)

 
5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Şikayet Mailimiz. İçerik, Yer Sağlayıcı Bilgilerimiz. Reklam Mailimiz. Gizlilik Politikası. Tatil
Copyright © 2018