mouse double click sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
mouse double click sorunu
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)
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)
Re: mouse double click sorunu
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);
Re: mouse double click sorunu
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.
örnek
if mouseevent.doubleclick then begin
end
bunu yapmak isityorum fakat mouse eventlarında double click diye bir yordam yok bu yuzden kontrol edemiyorum.
Re: mouse double click sorunu
arkadaşlar fikri olan yokmu yardım edin lütfen. harici bir programa double click yapıldığını nasıl anlarım.
- 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
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
konusunu araştırmanız.
Şimdilik cevap için araştırmaya ayıracak zamanım yok ama size önerim Mouse Hook

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: mouse double click sorunu
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.
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.
- 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
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. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: mouse double click sorunu
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.
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.
Re: mouse double click sorunu
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)
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)
Re: mouse double click sorunu
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
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...

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...

Re: mouse double click sorunu
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.
Re: mouse double click sorunu
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...
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...

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...

Re: mouse double click sorunu
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.
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.