2012-02-24 2 views
2

У меня есть код C# в .NET 3.5, который устанавливает фон рабочего стола в Windows Vista/7. Я хотел бы изменить свой код на кросс-платформенную Windows/Mac/Linux, изменив его так, чтобы он мог работать через Mono. Единственный вызов Interop в моем коде - это тот, который устанавливает обои.Установить обои для рабочего стола с помощью Mono

Я понимаю, что для каждой платформы потребуется другой метод/сценарий; мой план - проверить версию ОС & и запустить соответствующий код по мере необходимости. До сих пор я нашел следующие нестандартные моно ресурсы, которые могут помочь:

Некоторые из них имеют ответы, которые, как представляется, содержат сценарии, которые, возможно, могут быть выполнены с использованием вызова командной строки в каждой среде с помощью кода?

Как изменить фон рабочего стола с помощью моно в среде Linux и Mac?

+0

Я бы предпочел что в Linux это будет сильно зависеть от используемого рабочего стола. –

+0

@ AndrewJ.Brehm - Очень верно, но если бы я мог найти приемлемый последовательный метод, скажем, 2 или 3 разных команды, которые согласны с топ-менеджерами окон, я, вероятно, был бы доволен этим. – Peter

+0

Вот приложение для изменения обоев для Gnome, возможно, вы можете посмотреть на код и получить некоторые идеи: https://launchpad.net/drapes –

ответ

0

Установка обоев на Mac с Mono
Я собрал библиотеку под названием AppleScript Слим, который является C# DLL, что позволяет выполнять AppleScript от А WinForms (или действительно любой) Mono приложений. 100% кода для этого проекта вышло прямо из исходного кода Mono Develop, я просто подрезал и переупаковывал нужные мне фрагменты.

AppleScript Слим: 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 (Работа продолжается, я планирую использовать части библиотеки GCONF для Mono, как обсуждалось в комментариях к вопросу, еще не было возможности попробовать)