システムトレイにNotifyIconがあります。ユーザーが左クリックしたときにどうすれば検出できますか?私はMouseDown
イベントを使用したいと思っていましたが、右クリックと中央ボタンのクリックだけを処理します。左クリックの場合、ユーザーが放した後にのみ発火します(通常のクリックをしたように)。 MouseDownイベントのみを取得する方法はありますか?NotifyIconに相当するMouseDownがありますか?
6
A
答えて
4
これは仕様で、シェルはUpイベントからのMouseDownメッセージを合成します。ボタンをクリックしたままにしてドラッグを開始すると、このように動作する理由がわかります。通知領域のオーバーフローウィンドウがどのようにポップアップし、アイコンをドラッグして表示領域から削除するかを確認します。それは両方の方法で動作することはできません。
技術的には、Explorer.exeが所有するウィンドウをフックして、エクスプローラがSetWindowsHookEx()で行う前にメッセージに亀裂を入れることができます。ただし、C#で記述できない種類のDLLが必要な場合は、エクスプローラに注入する必要があります。非常に不安定で、同じことをしようとしている競争に勝つのは難しい。また、マイクロソフトのappcompatチームの不眠の夜を引き起こすコードの種類。
3
これは、基礎となるのWin32 API Shell_NotifyIcon
がWM_LBUTTONDOWN
メッセージを送ることが表示されますときユーザークリックアイコン。とにかくMSDNによると。
NotifyIconのWindowsフォームソースコードを調べると標準のマウスダウンイベント処理が行われるため、Win32メッセージが「正しい」時刻に送信されていれば、期待通りに動作します。
ユーザーがアイコンをドラッグできるようにマウスをキャプチャする必要があるため、NotifyIconがWM_LBUTTONDOWNを飲み込むという前のコメントに同意する必要があります。
this articleは、C#のSetWindowsHookEx
などを使用する方法を示しているので、WPFのトレイアイコンを作成すると便利です。
関連する問題
- 1. .NETにPath.PathSeparatorに相当するURIがありますか?
- 2. Node.jsに相当する.NETがありますか?
- 3. appendBezierPathWithArcWithCenterに相当するiOSがありますか
- 4. NullPointerExceptionのC++に相当するものがありますか?
- 5. クラスライブラリのApplication_Startに相当するクラスがありますか?
- 6. ウィンドウに相当するノードモンがありますか
- 7. -webkit-font-smoothingに相当するFirefoxがありますか:antialiased;
- 8. SimpleHTPServerに相当する竜巻がありますか?
- 9. Objective-CのstringWithUTF8Stringに相当するJavaがありますか?
- 10. java.util.concurrent.Executorに相当する.NETがありますか?
- 11. @Assistedに相当するjavax.inject。*があります
- 12. ClearCaseにRTCに相当する「サスペンドモード」はありますか?
- 13. rubyにはSOAP :: Lite相当のライブラリがありますか?
- 14. JavaにTweenMax相当のものがありますか?
- 15. Rubyの `respond_to?`に相当するC#はありますか?
- 16. SQL Server OUTPUT INSERTED。*に相当するOracleはありますか?
- 17. CoCreateInstanceExに相当する.NETはありますか?
- 18. JavaのFile.separatorに相当するC#はありますか
- 19. PHPのpreg_replaceに相当するMySQLはありますか?
- 20. SQL Server:strpos()に相当するものはありますか?
- 21. DOMエクスプローラに相当するWPFはありますか?
- 22. JSON - これに相当するXML CDATAはありますか?
- 23. Scalaに相当するソナーレベルのコードカバレッジはありますか?
- 24. sqlite3_limitに相当するPHPはありますか?
- 25. Docker Hubプライベートリポジトリに相当するGitHubデプロイメントキーはありますか?
- 26. Flexに相当するJMockはありますか?
- 27. ulのthに相当する意味はありますか?
- 28. GroovyのPower Assertに相当するPHPはありますか?
- 29. getcharに相当するJavaはありますか?
- 30. STL出力イテレータに相当するC#はありますか?
私はいくつかのことも試しました。あなたは私が好奇心を持っています。私もそれを試してVS11をインストールしました。運がない。私はほとんどそのバグだと思う。私は誰かにも答えがあることを願っています。 – JimDel
私はそれがドラッグできるという事実と関係していると思います(これは、アプリケーションではなくWindows自体によって処理されます)。たぶん、「mousedown」イベントは、アプリにバブリングするのではなく、Windowsに吸収されているのかもしれません。 – Skoder
[MSDN](http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.mousedown.aspx)のこれは完全に間違っていますか? – Steve