使用Mono设置桌面墙纸

时间:2012-02-24 14:54:45

标签: c# linux macos mono

我在.NET 3.5中使用C#代码来设置Windows Vista / 7中的桌面背景。我想将我的代码更改为跨平台的Windows / Mac / Linux,通过调整它以便它可以通过Mono运行。我的代码中唯一的Interop调用就是设置壁纸的那个。

据我所知,每个平台都需要不同的方法/脚本才能实现;我的计划是检查OS&版本并根据需要运行适当的代码。到目前为止,我发现了以下可能有用的非单声道资源:

其中一些答案似乎包含可能通过代码在每个环境中调用shell /命令行执行的脚本?

如何在Linux和Mac环境中使用mono更改桌面背景?

1 个答案:

答案 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,还没有机会尝试它)