Xamarin.Mac/スクリーンをロックする
< Xamarin.Mac
ナビゲーションに移動
検索に移動
2015年10月22日 (木) 02:01時点における153.219.225.170 (トーク)による版 (ページの作成:「==概要== 業務アプリなんかだと特定の人が使い終わったタイミングでOSのログイン画面まで戻しておきたいことも多いと思う。...」)
概要
業務アプリなんかだと特定の人が使い終わったタイミングでOSのログイン画面まで戻しておきたいことも多いと思う。 アプリレベルで認証画面をつけるのは無駄な労力なので、Mac OS Xのユーザー認証をLDAPにして外部に丸投げしたい場合などに活躍する。
実装:コマンドを叩く
ターミナルなどで以下のコマンドを叩くとスクリーンがロックされる。
/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend
これをXamarin.MacやMonoMacから外部コマンドとして実行してやるだけでよい。 当初System.Diagnostics.Process.Startで外部コマンドの実行を試みたがopenコマンドのエラーが出て上手くいかなかったので、とりあえずNSTask.LaunchFromPathを使って実現している。
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"});
}
}
}
関連項目
- Xamarin.Mac/ディスプレイのスリープを解除する
- Xamarin.Mac/スクリーンセーバーを終了させる
- Xamarin.Mac/AppleScriptを実行する
- Xamarin.Mac/システムステータスバーにアイコンを表示する