2011-08-29 30 views
6

2 düğmeyi içeren, başlat ve durdur, VS 2010 tarafından oluşturulan basit bir form kullanıyorum. StartWindowsHookEx'ı kullanarak WH_MOUSE_LL tetikleyiciyi başlatır ve durdurma kancayı durdurur. Kanca gayet iyi çalışıyor ve orta fare tuşunu çift tıklatarak "değiştir" seçeneğini tıklıyorum, sahip olduğum tek sorun formun Küçült/Büyüt/Kapat düğmelerini tıklıyor, öyle görünüyor ki bir çeşit "olay yarışı" var gibi görünüyor kanca ve yukarıda belirtilen düğmeler tarafından çağrılan olaylar arasında. Bu düğmelerden birine bastığınızda, bir süre işlem yapılmadan önce “basılı tutulduğu” gerçeğini yansıtır (ör. Form en aza indirir). Formu sağ tıklattığımda ve bu eylemlerden birini seçtiğimde, hemen aynı şey yanıt verir, ben de kancayı durdurup yukarıda bahsedilen düğmelerden birine bastığımda gider. Böyle bir davranışla karşılaştı mı?C# alt düzey fare kancası ve form olay yönetimi

+3

İlk içgüdüm muhtemelen iş için yanlış bir araç kullanıyor olmanızdır - Windows kancası kullanmanız gerektiğinde pek çok durumu düşünemiyorum. Belki de bu çözümü uygulamanıza yol açan sorunlara geri dönüp bununla ilgili bir soru gönderebilseydiniz? –

+1

Merhaba, bildiğim kadarıyla bu yönteme yaklaşmadan önce bir araştırma yaptım ve eğer farenin orta tuşunu tıkladığımda çift tıklama yapmak istediğimde farenin orta tuşunu tıklatıp tıklatıp ortadaki iki tıklamayı simüle etmek farenin x, y ve benim app bile çalışmak istiyorum. odakta veya simge durumuna küçültülmüş (veya sistem tepsisinde) kanca tek yoldur. Herhangi bir şekilde daha fazla c/C++ programcısı Ben sadece C# kullanmak istedim çünkü bir GUI oluşturmanın basitliği. – Alex

+1

@Alex - Araştırmanız sizi yanlış sonuca götürüyor. Sadece orta fare tuşunu yakalayın ve aynı olayı çift tıklama fare olayı olarak yapın (gerçekten sadece tek bir tıklama olayıdır). Ayrıca tüm fareler orta fare düğmesine sahip değil, bu yüzden dikkatli ol. –

cevap

2

Bunu daha önce de yaşadım. Kesin nedenlerden emin değilim, ama her zaman, fare, formun, pencerenin, ne olursa olsun, müşteri alanına girdiğinde ve çıkarken ateşlenen olayları dinleyerek sorunu çözdüm. Bu olayları, fareyi kancalayıp çıkarmak için kullanabilirsin, sonra normal davranışı alırsın.

İlgili konular