Eger Program çalışıyorsa Form2.show olayı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Eger Program çalışıyorsa Form2.show olayı
Anaform ve form2 var program sadece bir defa çalışıyor MUTEX kullandım.
ama sorunum windows sağ menüye ekledim oradan çağırıyorum programı ama anaform ile açılıyor ben
anaform'daki buton1 'e nasıl tıklatabilirim.
ama sorunum windows sağ menüye ekledim oradan çağırıyorum programı ama anaform ile açılıyor ben
anaform'daki buton1 'e nasıl tıklatabilirim.
Re: Eger Program çalışıyorsa Form2.show olayı
Kod: Tümünü seç
procedure TForm2.Button1Click(Sender: TObject);
begin
AnaForm.Button2.Click;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: Eger Program çalışıyorsa Form2.show olayı
ben exe den diger exe deki butana tıklamak istiyorum ama olmuyor problem nerede anlamadım
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
begin
h := FindWindowEx(0, 0, nil, 'Project1'); // a parent window
h := FindWindowEx(h, 0, 'Button', 'Kapat');
SendMessage(h, BM_CLICK, 0, 0);
end;
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: Eger Program çalışıyorsa Form2.show olayı
Kardesim cok basit ana formunda bir mesaj hazirla
Const
PM_MYMESSAGE = 1000 + 1;
Procedure PMMyMessage(var Message:Tmessage); message PM_MYMESSAGE;
Bunu ana formda tanimla ve mutex ile calisan uygulaman var ise yukarida findwindow ile arat ana formu ve SendMessage ile formun handlesine PM_MYMESSAGE yani 1000 + 1 gonder otomatik olarak ana formundaki bu prosedur calisacaktir ve istedigin islemi yaptir. Mobilim aciklayici yazamadim kusura bakma.
Const
PM_MYMESSAGE = 1000 + 1;
Procedure PMMyMessage(var Message:Tmessage); message PM_MYMESSAGE;
Bunu ana formda tanimla ve mutex ile calisan uygulaman var ise yukarida findwindow ile arat ana formu ve SendMessage ile formun handlesine PM_MYMESSAGE yani 1000 + 1 gonder otomatik olarak ana formundaki bu prosedur calisacaktir ve istedigin islemi yaptir. Mobilim aciklayici yazamadim kusura bakma.
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: Eger Program çalışıyorsa Form2.show olayı
Ayrica FindWindowsEx deki class ismi Button degil TButton dur dikkat et 
Delphide ki butun hiyerarsi (classlar icin soyluyorum) Interface ler ve pointerlar haric T prefix ile baslar buda Type anlamina gelir.

Delphide ki butun hiyerarsi (classlar icin soyluyorum) Interface ler ve pointerlar haric T prefix ile baslar buda Type anlamina gelir.
Re: Eger Program çalışıyorsa Form2.show olayı
teşekkürler bir örnek verebilirmisin
Re: Eger Program çalışıyorsa Form2.show olayı
tamam dedigin gibi yaptım ama olmadı
1- exe
Ana exe
1- exe
Kod: Tümünü seç
const
WM_MY_MESSAGE = WM_USER + 1;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
begin
h := FindWindow(nil, 'Project1');
h := FindWindowEx(h, 0, 'TButton', 'Button2');
if IsWindow(h) then
SendMessage(h, WM_MBUTTONDBLCLK, 0, 0);
end;
Ana exe
Kod: Tümünü seç
const
WM_MY_MESSAGE = WM_USER + 1;
Kod: Tümünü seç
protected
procedure WndProc(var Message: TMessage); override;
Kod: Tümünü seç
procedure TForm1.WndProc(var Message: TMessage);
begin
inherited;
case Message.Msg of
WM_MBUTTONDBLCLK:
Button2.click;
end;
end;
Re: Eger Program çalışıyorsa Form2.show olayı
Çok teşşekürler iyi fikir çalıştı
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: Eger Program çalışıyorsa Form2.show olayı
Programda Form1 in içinde control farketmeksizin Double Click yaptıgında button2 tetiklenir pek doğru bir kullanım değil wndproc yerine verdiğim message prosedürünü kullansaydınız daha doğru olabilirdi.