我在 .NET 3.5 中有 C# 代码,可以在 Windows Vista/7 中设置桌面背景。我想通过调整将我的代码更改为跨平台 Windows/Mac/Linux,以便它可以通过 Mono 运行。我的代码中唯一的 Interop 调用是设置墙纸的调用。
我知道每个平台都需要不同的方法/脚本才能工作;我的计划是检查操作系统和版本并根据需要运行适当的代码。到目前为止,我发现了以下可能有帮助的非单声道资源:
- (Mac/Python)How can I programmatically change the background in Mac OS X?
- (Linux/C++) Changing wallpaper on Linux programmatically
- (Linux/Python)How can I change my desktop background with python?
其中有几个答案似乎包含脚本,这些脚本可能可以通过代码在每个环境中调用 shell/命令行来执行?
如何在 Linux 和 Mac 环境中使用单声道更改桌面背景?
最佳答案
在使用 Mono 的 Mac 上设置墙纸
我整理了一个名为 AppleScript Slim 的库,它是一个 C# dll,允许您从 WinForms(或任何)Mono 应用程序执行 AppleScript。该项目 100% 的代码直接来自 Mono Develop 源代码,我只是修剪并重新打包了我需要的部分。
AppleScript Slim:https://applescriptslim.codeplex.com/
下面是关于如何使用我开发的 AppleScript 设置墙纸的示例代码(效果很好):
string applScript =
@"set theUnixPath to POSIX file ""{0}"" as text
tell application ""Finder""
set desktop picture to {{theUnixPath}} as alias
end tell";
MonoDevelop.MacInterop.AppleScript.Run(string.Format(applScript, localPath));
在 Ubuntu 上使用 Mono 设置墙纸 (正在进行中,我计划使用问题评论中讨论的 Mono 的 GCONF 库的一部分,还没有机会尝试)
关于c# - 使用 Mono 设置桌面墙纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432794/