我希望将我的一个 C# 应用程序转移到 Mono 以便在 Mac 上使用。目前,我正在尝试弄清楚如何使它成为一种“后台”进程,但仍然具有 GUI 元素的能力(我相信这排除了 mono-service
)。
最终目标是这样的:
- 在大多数交互中按时钟放置一个托盘图标。
- 删除启动的应用程序通常附带的停靠栏图标
- 让应用程序在启动时运行。
简而言之,想想Dropbox应用程序工作。我想要那种类型的 GUI,但带有 Mono/Mac 应用程序。
我相信这通常是通过在应用程序包的 Info.plist 中设置 LSUIElement = 1
来实现的。但是,我没有运气。我认为这可能与从应用程序包中启动我的应用程序的 mono
命令有关。一旦应用程序启动 mono
我假设它不会级联到进一步的应用程序启动。不过,这纯属猜测。
有没有人对此有任何想法?谢谢。
最佳答案
我有你的答案:
首先,添加一个状态栏图标(替代 Win Forms 中的通知图标):
NSStatusItem sItem = NSStatusBar.SystemStatusBar.CreateStatusItem(30);
sItem.Menu = notifyMenu;
sItem.Image = NSImage.FromStream(System.IO.File.OpenRead(NSBundle.MainBundle.ResourcePath + @"/notify-icon.icns"));
sItem.HighlightMode = true;
notifyMenu 是您的 NSMenu 实例,作为通知图标的上下文菜单条的一种方式。
并将使用 Icon Composer 制作的 ICNS 文件放入您的项目文件中,并将其标记为内容。 (右击->构建 Action ->内容)
现在是时候删除停靠栏图标了:
在您的 info.plist 文件中。创建一个新的Boolean 类型项并将其命名为“LSUIElement”并将值设置为YES。
希望对您有所帮助。 问候, 佩曼莫塔扎维
关于c# - 在 Mac 上使用 C#/Mono 的仅系统托盘(无停靠图标)应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414629/