我想把我的一个C#应用程序移到Mono上,以便在Mac上使用。目前,我正在设法使它成为一种“背景”过程,但仍然有能力拥有GUI元素(我相信这排除了mono-service)。
最终目标是:
简而言之,想想Dropbox应用程序是如何工作的。我想要那种类型的GUI,但是有一个Mono / Mac应用程序。
我认为这通常是通过在应用程序包的LSUIElement = 1中设置Info.plist来实现的。但是,我没有运气。我认为这可能与从应用程序包中启动我的应用程序的mono命令有关。一旦应用程序启动mono,我假设它不会级联到进一步的应用程序启动。不过,这完全是猜测。
有人对此有什么想法吗?谢谢。
发布于 2012-04-19 20:36:03
我有你的答案:
首先,添加状态栏图标( Win窗体中的选项):
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的实例,作为通知图标的上下文菜单项的一种方式。
并将使用图标编写器生成的ICNS文件放到项目文件中,并将其标记为内容。(右击->生成操作->内容)
现在是删除停靠图标的时候了:
在你的info.plist文件上。创建一个新的布尔类型项,并将其命名为"LSUIElement“,并将值设置为YES。
希望能帮上忙。你好,Peyman Mortazavi
发布于 2011-07-03 22:59:48
我不知道是否正确地理解了你的问题。如果您只需要一个没有主窗口概念的应用程序,但是使用了系统托盘,那么我曾经使用类似于以下代码的代码使用WinForms来实现它
static void Main()
{
Application.Run(new MyContext());
}其中,MyContext是从ApplicationContext派生的类,该类在构造函数中使用NotifyIcon类创建托盘图标。实际上,Application.Run()为您的应用程序启动消息循环,给托盘图标一个响应用户单击的机会(托盘图标本身可以在前面创建)。它在Windows和Ubuntu上工作,从未在Mac上进行过测试。
尽管如此,今天我还是会在Linux上使用Gtk#,在Mac上使用MonoMac。在第一种情况下,概念可能非常相似(您还可以看到Tomboy代码,它就是这样做的!)在第二个-不知道,从来没有用过。
https://stackoverflow.com/questions/4414629
复制相似问题