mrmarman yazdı:Eski versiyon'da aldığın TEdit'in yeri değişmiş sen bir önceki boş olanını alıyor olabilirsin. Veya belki de sınıf adı artık TEdit bile değildir. Gerçi sen yazabiliyorum ama okuyamıyorum demişsin bu da manidar bir durum ama bence kodlarında atladığın bir yer vardır.
Aşağıdaki kodu bir button altında uygula. Formun CLASS'ını
PChar('TForm1') dediğim yere yaz, sana o forma ait
TEdit'lerin tümünü dolaşacak ve içeriğini verecektir. Sen de nerede yanlışlık olduğuna bakarsın.
Eğer içerik seni tatmin etmezse, WinSight gibi bir yazılım kullanarak içeriğini almaya çalıştığın edit'in PARENT'i hangisi onu bulmaya çalış. Çünkü FindWindowEX api fonksiyonı referans olarak PARENT olanın handle'ine göre filtreleme yapar.
Kod: Tümünü seç
Var
Hand, Edit : HWND;
Baslik : Array[0..255] of Char;
begin
Hand := FindWindow( PChar('TForm1'), Nil );
If Hand <> 0 then begin
Edit := 0;
Repeat
Edit := FindWindowEx( Hand, Edit , PChar('TEdit'), Nil );
If Hand <> 0 then begin
SendMessage(Edit, WM_GETTEXT, 256, Integer(@Baslik));
ShowMessage(Baslik);
end;
Until Edit <= 0;
end;
end;
hocam bu kod da benim yaptığımın aynısını yapıyor..
Sanırım programın kendisinin bir koruması var..
Şuan aklıma bşka bir şey gelmiyor..
Bu verdiğiniz kod yine eski version'da yazılanı alıyor. Ancak yeni version'da almıyor.
e WM_SETTEXT çalıştığı için doğru handle'ı aldığıma da eminim :S
ben bir oyuna ek yama gibi birşey yapıyorum.
Oyunda F2 ye bastığınızda o anda chat'te ne yazıyorsa onu alıyordu ve ona göre işlem yapıyordu.
Sanırım şimdi daha farklı bir hook yapmam gerekecek..
mesela F1 e basıldığında yazı yazma yeri aktif , F2 ye basınca tamam , F3 e basınca sil gibi :S
neyse cevaplarınız için teşekkürler...