Merhaba,
Sizin cevap yolladığınıza dair gönderilen e-postayı atlamışım. O yüzden geç fark edebildim. Bunun için ve sorunuzu yanlış değerlendirdiğim için kusura bakmayın.
FindWindow metodu bence iyi bir metod değil. Zira bulmak istediğiniz formun create edilmiş ve handle almış olması gerekmektedir. Ayrıca Delphi açıkken Delphi içerisindeki design-time formu ile karışacağından debug etmek de zordur. Yine de handle üzerinden gitmek isterseniz yapmanız gereken, elinizde "handle"ı olan forma bir mesaj göndermek olacaktır. Karşıdaki form da bu mesajı yakalayarak bir prosedür çalıştırmalı ve yapmak istediğinizi o prosedür içerisinde yapmalısınız.
Kod: Tümünü seç
{test edilmemiş}
const
UM_MESAJ = WM_USER + $1; //veya başka bir sayı
//...
var
FormHWND: HWND;
//...
FormHWND := FindWindow(nil, 'Diğer Form');
PostMessage(FormHWND, UM_MESAJ, 0, 0);
Alıcı formda, test edilmemiş
Kod: Tümünü seç
const
UM_MESAJ = WM_USER + $1; //veya başka bir sayı
//...
private
procedure UM_Mesaj(var aMsg: TMessage); message UM_MESAJ;
//...
procedure UM_Mesaj(var aMsg: TMessage);
begin
//...
end;
Bu çok etkili bir yöntem olmayacaktır. Formun mesaj gönderildiği anda görünür veya görünmez olarak çalışıyor olması gereklidir (önceden create edilmeli).
gkimirti arkadaşımızın önerdiği liste üzerinden forma ulaşmak daha etkili bir yol olacaktır. Ancak bu metodda da formlar yaratılmış olmalıdır.
Eğer istediğiniz yaratılmamış formları "caption"larına göre seçerek yaratmaksa o zaman daha farklı bir yola girmek gerekecektir.
Uygulamanız hakkında biraz daha detay verebilir misiniz?
Ertuğ Kaya