Sistem tepsisinde bir NotifyIcon var. Kullanıcının üzerine sol tıklandığında nasıl fark edebilirim? Kullanmak istediklerim MouseDown
olayı olacağını düşündüm, ancak sadece sağ tıklama ve orta düğme tıklaması işliyor. Sol tıklama için, yalnızca kullanıcı izin verdikten sonra (sadece normal bir tıklama yaptıklarından) harekete geçer. Sadece MouseDown olayını almanın bir yolu var mı?NotifyIcon'da bir MouseDown eş değeri var mı?
cevap
Bu, tasarım gereğince kabuğun yukarı çıkış olayından MouseDown mesajını sentezler. Düğmeyi basılı tutup sürüklemeye başladığınızda neden bu şekilde çalıştığını göreceksiniz. Bildirim alanı taşma penceresinin nasıl açıldığını not edin ve simgeyi görünür alandan kaldırmak için simgeye sürüklemenize izin verin. İki şekilde de çalışamaz.
Teknik olarak, Explorer'ın SetWindowsHookEx() ile yapabilmesinden önce iletilerinde bir çatlak olması için Explorer.exe'ye ait olan pencereyi bağlayabilirsiniz. Ancak, C# ile yazamayacağınız bir DLL türü gerektirir, Explorer'a enjekte edilmesi gerekir. Çok istikrarsız ve aynı şeyi yapmaya çalışan rekabeti yenmek zor. Ayrıca Microsoft appcompat ekibi için uykusuz gecelere neden olan kod türüdür.
Bu temel Win32 API Shell_NotifyIcon
bir WM_LBUTTONDOWN
mesaj gönderir göründüğünde kullanıcı tıklama simgesi. Yine de MSDN'a göre.
NotifyIcon için Windows Forms kaynak kodunun incelenmesi, standart fare aşağı olay işlemesini ortaya çıkarır; bu nedenle, Win32 iletisinin "doğru" zamanda gönderilmesi durumunda, istediğiniz/beklediğiniz gibi çalışır.
Ben kullanıcı hakkında simgeleri sürüklemek için izin fare yakalama yapması gereken beri NotifyIcon WM_LBUTTONDOWN yutma olacağını bir önceki yorum ile anlaşmak zorunda.
O C# SetWindowsHookEx
vb nasıl kullanılacağını gösterir beri this article WPF için bir tepsi simgesi oluşturma hakkında yararlı olacağını mümkündür.
Bu, tasarım gereği olduğundan bu yana olay olayını ele alma yolu olmadığı anlamına mı geliyor? – Skoder
Kolay bir yol olduğunu düşünmüyorum. WM_XXX mesajlarını görev çubuğunun üstesinden gelmeden önce (C++) düşük seviyelerde tutturmak mümkün olabilir, ancak böyle bir şey yapmamın üzerinden uzun bir zaman geçti. – Phil
- 1. Array_rand() değeri var mı?
- 2. JavaScript mousedown
- 3. Python: "Eş" sınıfını mı buldunuz?
- 4. Bir mousedown ve mouseup olayı,
- 5. PDO :: debugDumpParams çıktısının maksimum değeri var mı?
- 6. Perl'de yerleşik bir doğru/yanlış boole değeri var mı?
- 7. CheckBoxList'in seçilen herhangi bir değeri var mı kontrol ediliyor
- 8. If ifadesinin durumunu, değeri olarak kullanmanın bir yolu var mı?
- 9. mousedown. kardeşler üzerinde yayılımı event.targets
- 10. Bu eski Swift kodundaki yeni "SubSlice" eş değeri nedir?
- 11. mouseDown basılıyken jusemove nasıl uygulanır
- 12. WPF: Adorner Hit Testi/MouseDown Olayı
- 13. Google eş anlamlılarını ayıklamanın yolu
- 14. - Bir fark var mı?
- 15. Eş zamansız yöntemler Ajax
- 16. SSLPeerUnverifiedException: eş kimlik doğrulanmadı
- 17. Solr eş anlamlılarını kullanırken orijinal terimi daha fazla artırmanın yolu var mı? Örneğin
- 18. Eş anlamlı sözcükler java içinde
- 19. BağlantıLoss for/hbase + Bağlantı eş tarafından sıfırlandı mı?
- 20. python eş anlamlı sözlük sözlüktür?
- 21. Ortak bir eş anlamlı nasıl doğru yapılır
- 22. Değeri sözlükler listesinde zaten var mı kontrol edin? aşağıdaki gibi
- 23. Çevrimdışı bir eşanlamlılar var mı? Bir düğüm uygulaması
- 24. CSS - Eş merkezli daireler
- 25. es6 eşdeğeriyle eş bulucuKullanıcı
- 26. Var değeri null değeri nasıl kontrol edilir?
- 27. MouseOver ve MouseDown üzerinde Animate düğmesi
- 28. iphone'da eş merkezli bir daire nasıl çizilir?
- 29. Mousedown etkinliğinde sürekli olarak nasıl kaydırılır?
- 30. Barkodun bir bitmapini geçirip değeri döndüren bir işlevi olan bir Android Barkod Kitaplığı var mı?
Ben de birkaç şey denedim. Merak ettin beni. Orada da denemek için VS11'i kurdum. Şanssız. Neredeyse bir böcek olduğunu düşünüyorum. Umarım birinin de bir cevabı vardır. – JimDel
Sanırım bunun sürüklenebileceği gerçeğiyle ilgili bir şey olabileceğini düşünüyorum (Windows tarafından uygulamanın kendisinde değil). Belki de "mousedown" olayı, uygulama tarafından kabarcıklanmak yerine Windows tarafından emiliyor. – Skoder
Yani [MSDN] (http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.mousedown.aspx) tamamen yanlıştır? – Steve