在 C# 托盘中拖放 NotifyIcon

Posted

技术标签:

【中文标题】在 C# 托盘中拖放 NotifyIcon【英文标题】:drag and drop on NotifyIcon in tray in C# 【发布时间】:2011-02-14 03:17:53 【问题描述】:

我正在尝试创建一个在托盘中运行的 C# 应用程序,我可以将文件放在它的图标上。 有什么方法可以获取系统托盘图标上放置的文件的路径? System.Windows.Forms.NotifyIcon 没有任何与拖放相关的事件。

【问题讨论】:

【参考方案1】:

不可能做到这一点,简单的方法。 如果光标位于通知图标附近的特殊区域,您可以显示一个虚拟表单。 dummy Form 可以获取被放置文件的文件路径。

【讨论】:

解决方法也不管用,找不到图标所在的位置。 @HansPassant -- Shell_NotifyIconGetRect Win32 API 可用于检索图标的位置。 好吧,只要你注册了guid。【参考方案2】:

它有 az 示例,但它并不完全并且是用 C++ 编写的 :(

DragnDropOnTrayIcon

【讨论】:

【参考方案3】:

这实际上是可以用一个稍微 hacky 的方法来做的。 Fluffy App 为其文件上传器执行此操作。它使用Spifftastic,它使用一种非常简洁的小方法来识别托盘图标的位置。然后在图标的位置上放置一个透明窗口并用作实际放置目标,但对于最终用户来说,这一切似乎都是在图标上放置文件。

【讨论】:

以上是关于在 C# 托盘中拖放 NotifyIcon的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForms - 在同一 TreeViewControl 中拖放

在 Windows 中拖放的通知

在没有 MFC 的 Visual Studio 中拖放 UI 设计器?

在 NSView 中拖放

在 Quasar 中拖放文件

在 Tkinter 中拖放?