我在.NET 3.5中使用C#代码来设置Windows Vista / 7中的桌面背景。我想将我的代码更改为跨平台的Windows / Mac / Linux,通过调整它以便它可以通过Mono运行。我的代码中唯一的Interop调用就是设置壁纸的那个。
据我所知,每个平台都需要不同的方法/脚本才能实现;我的计划是检查OS&版本并根据需要运行适当的代码。到目前为止,我发现了以下可能有用的非单声道资源:
其中一些答案似乎包含可能通过代码在每个环境中调用shell /命令行执行的脚本?
如何在Linux和Mac环境中使用mono更改桌面背景?
答案 0 :(得分:0)
使用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));
使用Mono在Ubuntu上设置壁纸 (正在进行中,我计划在问题评论中讨论使用部分GCONF库进行Mono,还没有机会尝试它)