sadettinpolat yazdı:FindControl fonksiyonu işini görür....
findVCLWindow da kodunu biraz kisaltir

Malesef hocam bu şekilde bende olmadı. Daha önce bu tür bir şeyi twincontrol bileşeni tanımlayarak denemiştim olmamıştı. Sanırım bu findcontrol ü de kullanmıştım. Ya da kullanamamıştım.
Hocam bu delphi de çalışan programda kullandığım zaman işe yarıyor. Ama bu programım çalışırken başka exe li bir programdaki bileşeni almaya çalıştığımda Acces violation hatası alıyorum. Şöyle örnekleyeyim. Sizin verdiklerinize göre şuan çalıştırdığım delphi programının üzerinde bulunan bir bileşenin handle ını aşağıdaki gibi aldığımda bana düzgün cevap veriyor.
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
var
ClassRef: TClass;
begin
ListBox2.Clear;
// ClassRef := findcontrol(1247350).ClassType;
ClassRef := findcontrol(strtoint(edit1.text)).ClassType;
while ClassRef <> nil do
begin
ListBox2.Items.Add(ClassRef.ClassName);
ClassRef := ClassRef.ClassParent;
end;
Ama başka exeli bir programı çalıştırıp üzerindeki bileşene gelip handle ını alıp burada kullanınca hata veriyor. Mesela o programdaki bileşen 1247350 idi
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
var
ClassRef: TClass;
begin
ListBox2.Clear;
ClassRef := findcontrol(1247350).ClassType;
// ClassRef := findcontrol(strtoint(edit1.text)).ClassType;
while ClassRef <> nil do
begin
ListBox2.Items.Add(ClassRef.ClassName);
ClassRef := ClassRef.ClassParent;
end;
Acaba nerede hata yapıyorum?
findvclwindow yazdığınızı yeni gördüm. Onu denemeye gerek duymadım sanırım handle yerine bulunduğu konumu parametre giriyor.
Tekrar teşekkür ederim hocam. İyi çalışmalar.