【问题标题】:How to hide a Mono application on the OSX Dock如何在 OSX Dock 上隐藏 Mono 应用程序
【发布时间】:2010-04-01 23:03:18
【问题描述】:

我有一个不应显示在 Dock 上的 Mono 应用程序,但偶尔会显示一个窗口。我不想为此应用程序显示菜单栏和停靠图标。我将我的应用程序包装在一个应用程序包中,并且我的 info.plist 文件将 LSUIElement 设置为“1”。这似乎并没有从 Dock 中隐藏我的应用程序。

我也尝试在 Process.Start 中使用以下信息调用 osascript: osascript -e '告诉应用程序“系统事件”将进程“myapp”的可见设置为false'

这将返回系统事件错误代码:-10006。到目前为止,我还没有找到这意味着什么。

我还尝试了 Mono 中的所有标准 Hide() 和 Visibility = false 内容。

有人找到了解决方法,或者知道我可以研究的方向吗?在大多数情况下,在 Mono 中工作是简单的 .Net 编码,但这让我很困惑。

【问题讨论】:

    标签: macos mono dock headless


    【解决方案1】:

    好吧,经过大量的工作,我想出了一个更好的方法来做到这一点。我正在生成一个针对 OSX 的 Silverlight + 单声道应用程序。我需要通过同一个按钮启动两者。

    使用 Silverlight OOB 安装过程创建的包中的 bash 脚本命令解决了这个问题,并使用一些 rsync 命令简单地分发了创建的包。

    启动服务器位的行(使用 Mono 的 macpack 工具创建): 打开 MyApp.app &

    然后正常启动 Silverlight OOB 应用程序的行: ./Silverlight $@ &> /dev/null

    “$@”位将所有初始参数传递到 OOB 应用程序中的 Silverlight 可执行文件。这意味着您必须使用 Info.plist 以使其启动您自己的启动器,因此您的“Silverlight”可执行文件不会在 Silverlight 更新时被覆盖,但似乎工作得很好。

    【讨论】:

      【解决方案2】:

      这就是你要找的东西:http://uselessthingies.wordpress.com/2008/05/18/an-app-without-dock-icon-and-menu-bar/

      tl;dr:打包您的 .app,并在您应用的 Info.plist 中添加 <key>LSUIElement</key><string>1</string>

      【讨论】:

      • 我已经尝试了这两个选项,但当时对我不起作用。一定有一些关于 LSUIElement 的东西我不明白,或者丢失了。此时有可能更新修复了我所看到的行为。我使用的解决方案效果很好,所以我没有做更多的实验。
      猜你喜欢
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      相关资源
      最近更新 更多