差分

ナビゲーションに移動 検索に移動

Xamarin.Mac/スクリーンをロックする

1,742 バイト追加, 2015年10月22日 (木) 02:01
ページの作成:「==概要== 業務アプリなんかだと特定の人が使い終わったタイミングでOSのログイン画面まで戻しておきたいことも多いと思う。...」
==概要==
業務アプリなんかだと特定の人が使い終わったタイミングでOSのログイン画面まで戻しておきたいことも多いと思う。
アプリレベルで認証画面をつけるのは無駄な労力なので、[[Mac OS X]]のユーザー認証をLDAPにして外部に丸投げしたい場合などに活躍する。

==実装:コマンドを叩く==
ターミナルなどで以下のコマンドを叩くとスクリーンがロックされる。
<source lang="bash">
/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend
</source>

これを[[Xamarin.Mac]]や[[MonoMac]]から外部コマンドとして実行してやるだけでよい。
当初System.Diagnostics.Process.Startで外部コマンドの実行を試みたがopenコマンドのエラーが出て上手くいかなかったので、とりあえずNSTask.LaunchFromPathを使って実現している。
<source lang="csharp">
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"});
}
}
}
</source>

==関連項目==
*[[Xamarin.Mac/ディスプレイのスリープを解除する]]
*[[Xamarin.Mac/スクリーンセーバーを終了させる]]
*[[Xamarin.Mac/AppleScriptを実行する]]
*[[Xamarin.Mac/システムステータスバーにアイコンを表示する]]

==参考文献==
{{reflist}}

{{stub}}

[[category:Xamarin.Mac]]
[[category:MonoMac]]
匿名利用者

案内メニュー