mouse double click sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

mouse double click sorunu

Mesaj gönderen Lord_Ares »

merhaba arkadaşlar
kendi programımdan harici bir program seçtirmek istiyorum. Bunu yapmak içinde mousun olduğu yerin handle nosunu alıyorum. mouse ile hangi pencere double click yapılırsa o pencerenin handle nosunu alıp programımda kullanmak istiyorum

mousun olduğu yerin handlenı ve tekstini şu şekilde alıyorum.

procedure farehandle; /// farenin olduğuyerin handlesi
var
handledegeri:hwnd;
t:Tpoint;
a:integer;
c:array[0..50] of char;
begin
GetCursorPos(t);
handledegeri:=WindowFromPoint(t);
a:=GetWindowText(handledegeri,c,sizeof(c));
form1.Label7.Caption:=(c);
form1.Label6.Caption:=(IntToStr(handledegeri));
end;

araştırdığımda mouse clik kodu olarak şunu buldum fakat double click bulamadım.

mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);


kısacası şunu nasıl yaparım . programım mousun olduğu yere double clik yapıldığında o pencerenin handle nosunu alıp çalışmaya başlasın.

( yazmış olduğum program yanlış anlaşılmasın , internet explorer yeni sürümlerinde açılan yeni sayfalar yeni tablarda açılıyor. Bu yüzden aynı captionlara sahip iki pencere oluyor. içindeki tekstleri alacağı sayfayı seçtirmek için bende mouse ile double click yapsın isityorum)
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: mouse double click sorunu

Mesaj gönderen emin_as »

Aşagıdaki kodu dene, denemedim ama çalışıyor olması lazım.

Kod: Tümünü seç

 
  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: mouse double click sorunu

Mesaj gönderen Lord_Ares »

kod işey yarıyor onu kullanıyorum zaten fakat yapmak istediğim şu eğer kullanıcı harici bir ortamda double click yaptıysa demeliyim.

örnek

if mouseevent.doubleclick then begin


end


bunu yapmak isityorum fakat mouse eventlarında double click diye bir yordam yok bu yuzden kontrol edemiyorum.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: mouse double click sorunu

Mesaj gönderen Lord_Ares »

arkadaşlar fikri olan yokmu yardım edin lütfen. harici bir programa double click yapıldığını nasıl anlarım.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: mouse double click sorunu

Mesaj gönderen sabanakman »

Bu söylediğin çift tıklama yapmak değil çift tıklamayı yakalamak. Yani verdiğin mouse_event koduyla bir alakası yoktur. Soru özrlü olunca alacağın cevaplar çöp olacaktır üstüne cevabı yazanın zamanından çalacaktır. Lütfen sorularımızda daha açıklayıcı ve özenli olalım.

Şimdilik cevap için araştırmaya ayıracak zamanım yok ama size önerim Mouse Hook :ara konusunu araştırmanız.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: mouse double click sorunu

Mesaj gönderen Lord_Ares »

baştan saygılı olmayı öğrensen iyi olur. soru özürlü değil senin anlayışın kıt sanırım bir daha oku soruyu ve cevaplarımızı.

1 programım mousun olduğu yere double clik yapıldığında o pencerenin handle nosunu alıp çalışmaya başlasın.

bu satır ile zaten double click yakalamaya çalıştımığımı anlattım.

2. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); diyerek mous eventı vermemin nedenini , sen hariç anlayan arkadaşlarım cevap zaten yazmış.

anlamanı kolaylaştırayım. Gerçi ikinci cevabımda örnekte verdim. bu mouse eventını if döngüsünde kullanırsam double click yapmış olurmuyum veya double click eventı varmı anlamında sormuştum.

Yardımcı mı olmak istiyorsan hitap şeklinden başlarsan sevinirim fakat amacın tartışma yaratmaksa bu tür cevaplar verip sizinde dediğiniz gibi boş yere zamanımızı çalmayın.

Siz hariç , bu konuyu okuyan tüm arkadaşlardan polemik için özür diliyorum.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: mouse double click sorunu

Mesaj gönderen sabanakman »

Rahatsız ettiysem özür dilerim. Anlamadığım nokta çift tıklamayı kullanıcı mı yapacak program kodlarıyla mı yapılacak sorun ondan çıktı. Bayram öncesi kusuruma bakma.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: mouse double click sorunu

Mesaj gönderen Lord_Ares »

ok dostum sende kusura bakma , sorum şuydu, kullanıcı hangi pencereye double click yaptıysa o pencerenin handle nosunu almak isityorum.
misal şöyle bir kod verim

if mouse_event=double_click then begin //// eğer mousa double click yaptıysa handle nosunu al

end
yukarıda arkadaşımın dediği gibi mouse birkez click yapma eventını iki kez yazsam olmuyor yada ben yapamadım bu yuzden mouse eventlerda double click varmı diye araştırdım fakat öyle birşey bulamadım.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: mouse double click sorunu

Mesaj gönderen Lord_Ares »

arkadaşlar şöyle bir şey buldum fakat çözemedim. sizce bunla olurmu birde siz incelermisiniz.
mouse similasyonu kodları içinde bu kodu gördum sadece bu kadarı var.
/ Simulate a double click
// Einen Doppelklick simulieren
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
GetDoubleClickTime;
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

// Simulate a double click on a panel
// Einen Doppelklick auf einen Panel simulieren
SendMessage(Panel1.Handle, WM_LBUTTONDBLCLK, 10, 10)
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: mouse double click sorunu

Mesaj gönderen unicorn64 »

yanlış bir yolda yürüyorsun gibi geldi bana..
benzer bir kodu daha önce de verdin. bu verdiğin koddaki açıklamada da dendiği gibi bu kod mouse ile çift tıklanmış gibi yapar
(Simulate a double click on a panel - bir panele çift tıklanmasını simule et yani çift tıklanmış gibi yap)


yapman gereken daha önce @sabanakman hocamın da dediği gibi MouseHook konusuna bakman. senin de daha önce dediğin gibi sen özellikle senin programın dışındaki çift tıklamayı istiyorsun.

araştırmaya buradan başlayabilirsin
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: mouse double click sorunu

Mesaj gönderen Lord_Ares »

ok yardımınız için teşekkurler. mouse hook olayı hep bir dll eklenerek yapılmış. bu dll de virus uyarısı veriyor. bu nedenle o dll dosyasını kullanmak istemediğim için kendim yapmaya çalıştım. Sanırım yapamıyacağım, bu yüzden programımı yarım bırakıyorum yardımlarınız için teşekkürler.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: mouse double click sorunu

Mesaj gönderen unicorn64 »

aslında antivirüs programına dll in virüs olmadığı belirtilirse (add trusted zone yada programa göre adı her neyse o seçenek kullanılarak) bu sorun aşılabilir.

bu arada nasıl bir programdı uğraştığınız, amaç tam olarak neydi? yani programla o an açık olan diğer programları seçtirip ne yapacaksınız? belki farklı yöntemler kullanılabilir.

şu an ilk aklıma gelen madem o an çalışan programlar seçtirilecek o anda çalışan programların ismini programınızda listeletip ordan seçtirebilirsiniz belki...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: mouse double click sorunu

Mesaj gönderen Lord_Ares »

bunu kullanacağım yer şöyle, yeni exloperer ve mozilla gibi tarayıcılarda açtığınız internet sayfaları yeni pecere şeklinde değilde yeni sekmelerde açılıyor. mesela bu siteden örnek verecek olursam. sitede sorulmuş olan iki farklı konuyu açın, açılan sayfaların captionu şöyle olur Delphi Forum - mozilla firefox
oysa eski versiyonlarında açılan konu adı çıkıyor. önceki programımda findwindow ile bu pencere başlıklarını aratıp handle nosunu aldıktan sonra bu pencerede isteğim işlemi yapabiliyordum mesala içeriğini almak gibi..

yeni versiyonlarında açılan sayfalar yeni sekmelerde açıldığı için findwindow ile pencereyi bulamıyorum. ilk pencereden başlayıp alt pencerelere sırayla bakmak bazen sorun çıkarıyor bulamıyor. bu yuzden diyorum ki kullanıcı, program hangi pencereyi takip etmesini istiyorsa o pencereye double click yapsın. Kullanıcı mouse double click yaptığında programım handle nosunu alıcak ve bu pencereyi takip edecek. bunu webbrowserla neden yapmadınız derseniz webbrowser komponenti bazı sayflarda nerdeyse çoğunda hatalar veriyor.( mesela java, flash uygulamlar olan sayfalarda) ikinci bir nedenide programlar bazen kullanıcılarda hatalar veriyor, hatayı sorduğumda ya hatırlamıyorlar ya tamamını söyleyemiyorlar. eğer böyle bir şey yapabilrisem diğer programlarımada bunu entegre edip hata oluştuğunda bunları okuyabileceğim ve onlara oluşan hataları hakkında yardımcı olabileceğim.
Cevapla