【问题标题】:Mac Kiosk Mode API - Force Quit Crashing ApplicationMac Kiosk Mode API - 强制退出崩溃应用程序
【发布时间】:2012-07-12 07:05:27
【问题描述】:

我正在编写一个 Mac (10.6 / 10.7) 应用程序,该应用程序在允许用户访问计算机之前根据 Active Directory 域对用户进行身份验证(我被告知我不能允许用户通过传统方式登录登录服务)。我已准备好验证码,现在正尝试将登录窗口设为全屏且无法关闭。

Apple 的 Kiosk Mode API(此处的文档)似乎非常适合此操作,我已使用它来全屏显示窗口、禁用停靠栏/菜单栏/强制退出等,其中大部分都可以正常工作。但是,我发现当我将窗口视图设置为全屏模式时,尝试调出强制退出窗口会使应用程序崩溃(无论是桌面还是全屏并需要完全重启)。

代码示例:

NSApplicationPresentationOptions options = 
NSApplicationPresentationHideMenuBar|NSApplicationPresentationHideDock|
NSApplicationPresentationDisableHideApplication|
NSApplicationPresentationDisableProcessSwitching|
NSApplicationPresentationDisableAppleMenu|
NSApplicationPresentationDisableForceQuit;

[NSApp setPresentationOptions:options];
[[_window contentView] enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];

我唯一能想到的是切换到全屏时 NSApplication 选项并没有完全保留;不过,除了禁用强制退出之外的所有选项似乎都可以继续使用。任何建议表示赞赏!

【问题讨论】:

    标签: objective-c macos keyboard-shortcuts fullscreen kiosk-mode


    【解决方案1】:

    这实际上是 Mac 上全屏应用的正常行为。当您在全屏应用中使用 Cmd+Opt+Esc 时,它将立即终止已捕获屏幕的进程,而不是呈现标准的终止 UI。

    【讨论】:

    • 我认为这是有道理的,但据我了解,Kiosk 模式 API 是专门为防止用户终止应用程序而设计的。
    • 是的,但我相信你必须以特殊权限运行。否则,任何应用程序都可能会阻止用户,直到他输入他的信用卡号或其他东西。尝试以root 的身份运行应用程序--这样可以吗?
    • 不,没用。我想我将放弃使用 NSView 的 enterFullScreenMode 并改用屏蔽屏幕,以及禁用强制退出的 NSApp 选项。不过,谢谢。
    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多