【问题标题】:Changing background position and menu bar translucence更改背景位置和菜单栏半透明
【发布时间】:2012-04-24 14:33:24
【问题描述】:

如何更改桌面背景位置(“填充屏幕”、“适合屏幕”、“拉伸以填充屏幕”、“中心”或“平铺”之一)和菜单栏半透明(打开或关闭)来自代码?

基本上,我想模拟“桌面和屏幕保护程序”首选项窗格中的类似功能。

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    使用AppleScript,你可以改变菜单栏的半透明:

    tell application "System Events"
        set translucent menu bar of first desktop to false
    end tell
    

    桌面图片有各种属性——change intervalpicturepicture rotationpictures folderrandom order——但与背景位置无关。可能无法通过代码进行配置。


    使用脚本桥技术更新:

    在终端中,执行:

    sdef /System/Library/CoreServices/System\ Events.app | sdp -fh --basename SystemEvents
    

    将生成的 SystemEvents.h 添加到您的项目中。将其导入您的代码。将 ScriptingBridge 框架添加到您的目标。

    然后,在您的代码中,您可以执行以下操作:

    SystemEventsApplication* SystemEvents = [SBApplication applicationWithBundleIdentifier:@"com.apple.systemevents"];
    SystemEvents.currentDesktop.translucentMenuBar = FALSE;
    

    您可以进一步了解脚本桥here

    【讨论】:

    • 我可以用 Objective-C 做同样的事情吗?
    • 我已经用使用 Scripting Bridge 的技术更新了我的答案。
    • 如果我要通过 Mac App Store 分发应用程序,这是特定于我的系统,还是会在任何地方运行?
    • 进行干净构建后,我收到以下错误:Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_SBApplication", referenced from: objc-class-ref in TAppDelegate.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
    • 对不起。您必须将 ScriptingBridge 框架添加到您的项目中。这将在任何地方工作。系统事件是 Mac OS X 的标准部分。我不确定 App Store,但我不明白为什么 Apple 会拒绝它。它仅使用记录在案且受支持的技术。
    猜你喜欢
    • 2015-11-12
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2013-11-15
    • 2023-03-06
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多