2012-02-24 1 views
2

J'ai le code C# dans .NET 3.5 qui définit l'arrière-plan du bureau dans Windows Vista/7. Je voudrais changer mon code pour être multiplate-forme Windows/Mac/Linux en l'ajustant pour qu'il puisse fonctionner à travers Mono. Le seul appel Interop dans mon code est celui pour définir le fond d'écran. Je comprends que chaque plate-forme nécessitera une méthode/un script différent pour que cela fonctionne; Mon plan est de vérifier la version OS & et d'exécuter le code approprié selon les besoins. Jusqu'à présent, j'ai trouvé les ressources non mono suivantes qui peuvent aider:Définir le papier peint de bureau à l'aide de Mono

Plusieurs d'entre elles ont des réponses qui semblent inclure des scripts qui pourraient peut-être être exécutés en utilisant un appel au shell/ligne de commande dans chaque environnement via le code? Comment puis-je changer l'arrière-plan du bureau en utilisant le mono dans les environnements Linux et Mac?

+0

Je suppose cela sous Linux dépendra beaucoup du bureau utilisé. –

+0

@ AndrewJ.Brehm - Très vrai, mais si je pouvais trouver une méthode _reasonablement_ cohérente, disons 2 ou 3 commandes différentes qui correspondent aux 2 meilleurs gestionnaires de fenêtres, je serais probablement heureux avec ça. – Peter

+0

Voici une application de changement de fond d'écran pour Gnome, peut-être vous pouvez regarder le code et obtenir quelques idées: https://launchpad.net/drapes –

Répondre

0

Réglage du papier peint sur un Mac avec Mono
J'ai mis en place une bibliothèque appelée AppleScript Slim qui est un dll C# qui vous permet d'exécuter AppleScript à partir d'un WinForms (ou vraiment tout) l'application Mono. 100% du code de ce projet provenait directement du code source de Mono Develop, j'ai juste découpé et reconditionné les pièces dont j'avais besoin.

AppleScript Slim: https://applescriptslim.codeplex.com/

Voici l'exemple de code sur la façon de définir le fond d'écran en utilisant AppleScript j'ai développé (et qui fonctionne très bien):

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)); 

Réglage du papier peint sur Ubuntu avec Mono (Travail en cours, je prévois d'utiliser des parties de la bibliothèque GCONF pour Mono comme discuté dans la question commentaires, n'ont pas encore eu l'occasion de l'essayer)

Questions connexes