「Xamarin.Mac/スクリーンをロックする」の版間の差分
ナビゲーションに移動
検索に移動
33行目: | 33行目: | ||
[[Cocoa]]依存のNSTask.LaunchFromPathメソッドではなく、[[.NET]]標準のSystem.Diagnostics.Process.Startメソッドで外部コマンドを実行してもよい。 | [[Cocoa]]依存のNSTask.LaunchFromPathメソッドではなく、[[.NET]]標準のSystem.Diagnostics.Process.Startメソッドで外部コマンドを実行してもよい。 | ||
− | + | マルチプラットフォームを前提とする[[Mono]]系で[[プログラミング]]する際には、[[.NET]]でも可能なものは[[.NET]]で実現するのが望ましいのだろうが、これは叩いているコマンド自体が[[Mac]]依存なのであんまり意味がない。 | |
<source lang="csharp"> | <source lang="csharp"> | ||
System.Diagnostics.Process.Start( | System.Diagnostics.Process.Start( |
2015年10月22日 (木) 02:09時点における最新版
概要[編集 | ソースを編集]
業務アプリなんかだと特定の人が使い終わったタイミングでOSのログイン画面まで戻しておきたいことも多いと思う。 アプリレベルで認証画面をつけるのは無駄な労力なので、Mac OS Xのユーザー認証をLDAPにして外部に丸投げしたい場合などに活躍する。
実装:コマンドを叩く[編集 | ソースを編集]
ターミナルなどで以下のコマンドを叩くとスクリーンがロックされる。
/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend
これをXamarin.MacやMonoMacから外部コマンドとして実行してやるだけでよい。
using System;
using System.Drawing;
using MonoMac.Foundation;
using MonoMac.AppKit;
namespace ScreenLock
{
class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();
NSTask.LaunchFromPath(
"/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession",
new []{"-suspend"});
}
}
}
Cocoa依存のNSTask.LaunchFromPathメソッドではなく、.NET標準のSystem.Diagnostics.Process.Startメソッドで外部コマンドを実行してもよい。 マルチプラットフォームを前提とするMono系でプログラミングする際には、.NETでも可能なものは.NETで実現するのが望ましいのだろうが、これは叩いているコマンド自体がMac依存なのであんまり意味がない。
System.Diagnostics.Process.Start(
"/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession",
"-suspend"
);
関連項目[編集 | ソースを編集]
- Xamarin.Mac/ディスプレイのスリープを解除する
- Xamarin.Mac/スクリーンセーバーを終了させる
- Xamarin.Mac/AppleScriptを実行する
- Xamarin.Mac/システムステータスバーにアイコンを表示する