Fare Orta Tekerleğinin Dönüşünü Algılama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
loaded
Üye
Mesajlar: 126
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen loaded »

Selam Arkadaşlar
GetAsyncKeyState komutu ile fare sol,sağ,orta tuş hareketlerini çok hızlı algılayıp gereken işlemleri yapabiliyoruz.Malesef orta tekerleğin hareketini algılatamadık. Bu arada bu komut haricinde peekmessage yahut formMouseWheel yöntemlerini denedik fakat bu yöntemler de yavaş yada tepkisiz kalabiliyorlar.

Amacımız GetAsyncKeyState komutu ile bu işi çözmek, yardımcı olursanız memnun oluruz. Saygılar.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen ikra »

kıdemsiz üye
Kullanıcı avatarı
loaded
Üye
Mesajlar: 126
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen loaded »

Teşekkür ederim cevabınız için Delphi XE10 da Program çalışıyor fakat hook işlem yapmıyor :?
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen ikra »

wndproc ile gelen mesajlari yakalayip parametrelerde vk_mousewheel kontrolü yapsaniz olmaz mi?
kıdemsiz üye
Kullanıcı avatarı
loaded
Üye
Mesajlar: 126
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen loaded »

İkra Hocam;
Nerdeyse denemediğimiz yöntem kalmadı. Diğer yöntemler program boştayken sorunsuz çalışıyorlar.Fakat program yüke geçtiğinde gözlemlerimize göre en hızlı ve kararlı komut GetAsyncKeyState, yapabilirsek bununla devam etmeyi düşünüyoruz.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen ikra »

Getasynckeystate farenin butonlarinin statusunu aliyor. Orta tekerlek icin wndproc ile gelen mesajlarin tümünü yakalayip aradan ayiklama yapmak gerekir (saniyorum).
Benim su an deneme imkanim yok fakat bence olabilitesi yüksek.
kıdemsiz üye
Kullanıcı avatarı
loaded
Üye
Mesajlar: 126
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen loaded »

İkra Hocam;
İlgi ve alakanızdan ötürü teşekkür ediyorum Allah razı olsun.
Wndproc yöntemini denedim çalışıyor,fakat yoğun süren işlemlerde programın nefesinin kesildiği anlarda yanıt vermiyor. Döngü sonlandıktan sonra yanıt veriyor. Bana döngü içerisinde benim direk kontrol edebileceğim bir yöntem lazım.İnşallah bulurum :)
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen ikra »

Bunu sorgulayabilecegin bir api var mi bilmiyorum. Wndproc pencerenin mesajlarini alir ve bu mainthread icerisinde gerceklesir. Programininin mainthread'i döngü ile mesgulken gelen pencere mesajlarini islemesini mümkün kilmanin tek imkani, döngü icerisinde application.processmessages kullanmak olacaktir.
kıdemsiz üye
Kullanıcı avatarı
loaded
Üye
Mesajlar: 126
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen loaded »

application.processmessages oluyor fakat bu seferde çizim işlemlerinin oldukça yavaşlamasına sebep oluyor.
Ne hikmetse iki iyilik bi araya dek gelmiyor :?
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen mrmarman »

Merhaba..

WM_INPUT'dan gelen mesajları takibe alınca yavaşlama vs. olmaması lazım. Dinleme işlemini windows mesaj sisteminden tetiklenecektir çünkü.

- Projelerimden birinden küçük bir deneme yaptım, RAW Mouse Button mesajlarını alırken usButtonData 1024 ( hex 0x0400 ) ise orta tekerlek işlemleri olduğunu, alt record'undan da ulRawButtons değerini 120 görürsen yukarı tekerlek, 65416 görürsen aşağı tekerlek olarak gözlemledim...

Bakınız : MSDN linki

Test projesini bu mesaj ekinden deneyebilirsin.
Dosya ekleri
BirdenFazlaMouse.rar
Mouse Test
(184.6 KiB) 70 kere indirildi
Resim
Resim ....Resim
Kullanıcı avatarı
loaded
Üye
Mesajlar: 126
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Fare Orta Tekerleğinin Dönüşünü Algılama

Mesaj gönderen loaded »

Zannedersem ! ben bi yerlerde hata yapıyorum.
Konu ile ilgili olarak programın akışını değiştirmem gerektiğini anlamış bulunmaktayım.
Zaman ayırıp cevap verdiğiniz için teşekkür ederim.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Cevapla