WorkStationLockController

「WorkStationLockController」の編集履歴(バックアップ)一覧はこちら

WorkStationLockController」(2007/07/16 (月) 21:46:31) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

&html(<!-- [FC2 Analyzer] http://analyzer.fc2.com/ --><script language="javascript" src="http://analyzer5.fc2.com:8080/ana/processor.php?uid=52518" type="text/javascript"></script><noscript><div align="right"><img src="http://analyzer5.fc2.com:8080/ana/icon.php?uid=52518&ref=&href=&wid=0&hei=0&&col=0" /></div></noscript><!-- [FC2 Analyzer] -->) PageLastUpdate:&date()/today:&counter(today)/yesterday:&counter(yesterday) *WorkStationLockController 2007/07/16 WorkStationにロックをかける&何度もロックをかけないように状態を管理するクラスです。 あたりまえですが、ロックを解除することはできません。それができないのがセキュリティの大原則なので。 とりあえず動いたので乗せてみる。 なんかアドバイスとかある方はお願いします。 #highlight(vb.net){ Option Strict On Option Explicit On Imports Microsoft.Win32 Public Class WorkStationLockController Private Shared _singleton As WorkStationLockController = New WorkStationLockController() Private _Locked As Boolean = False ' コンストラクタです。(外部からのアクセス不可) Private Sub New() '監視開始 AddHandler SystemEvents.SessionSwitch, AddressOf SessionSwitch End Sub Private Sub SessionSwitch(ByVal sender As Object, ByVal e As SessionSwitchEventArgs) Try Select Case e.Reason Case SessionSwitchReason.SessionLock _Locked = True Case SessionSwitchReason.SessionUnlock _Locked = False End Select Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub ' 唯一のインスタンスを取得します。 Public Shared Function GetInstance() As WorkStationLockController Return _singleton End Function Public Function Lock() As Boolean Try '特殊機能 Ctrl+Altを押しているとLockされない。 'これがないと、どうにもならなくなることがあるため。 If (My.Computer.Keyboard.CtrlKeyDown = False) And (My.Computer.Keyboard.AltKeyDown = False) Then If _Locked = False Then System.Diagnostics.Process.Start("rundll32.exe", "user32.dll,LockWorkStation") _Locked = True End If Return True Else Return False End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Function Public ReadOnly Property IsLocked() As Boolean Get Return _Locked End Get End Property Protected Overrides Sub Finalize() MyBase.Finalize() Try RemoveHandler SystemEvents.SessionSwitch, AddressOf SessionSwitch Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub End Class } ---- *comment このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。 #comment_num2 ----
&html(<!-- [FC2 Analyzer] http://analyzer.fc2.com/ --><script language="javascript" src="http://analyzer5.fc2.com:8080/ana/processor.php?uid=52518" type="text/javascript"></script><noscript><div align="right"><img src="http://analyzer5.fc2.com:8080/ana/icon.php?uid=52518&ref=&href=&wid=0&hei=0&&col=0" /></div></noscript><!-- [FC2 Analyzer] -->) PageLastUpdate:&date()/today:&counter(today)/yesterday:&counter(yesterday) *WorkStationLockController 2007/07/16 WorkStationにロックをかける&何度もロックをかけないように状態を管理するクラスです。 あたりまえですが、ロックを解除することはできません。それができないのがセキュリティの大原則なので。 とりあえず動いたので乗せてみる。シングルトンで作ってあって、一行で呼び出せます。 WorkStationLockController.GetInstance.Lock() という感じ。とはいっても複数のアプリから呼ばれると、あまりシングルトンである意味はないです。 まあ自分のアプリケーションからは、間違って何度もロックしてしまうのを避けるために。 なんかアドバイスとかある方はお願いします。 #highlight(vb.net){ Option Strict On Option Explicit On Imports Microsoft.Win32 Public Class WorkStationLockController Private Shared _singleton As WorkStationLockController = New WorkStationLockController() Private _Locked As Boolean = False ' コンストラクタです。(外部からのアクセス不可) Private Sub New() '監視開始 AddHandler SystemEvents.SessionSwitch, AddressOf SessionSwitch End Sub Private Sub SessionSwitch(ByVal sender As Object, ByVal e As SessionSwitchEventArgs) Try Select Case e.Reason Case SessionSwitchReason.SessionLock _Locked = True Case SessionSwitchReason.SessionUnlock _Locked = False End Select Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub ' 唯一のインスタンスを取得します。 Public Shared Function GetInstance() As WorkStationLockController Return _singleton End Function Public Function Lock() As Boolean Try '特殊機能 Ctrl+Altを押しているとLockされない。 'これがないと、どうにもならなくなることがあるため。 If (My.Computer.Keyboard.CtrlKeyDown = False) And (My.Computer.Keyboard.AltKeyDown = False) Then If _Locked = False Then System.Diagnostics.Process.Start("rundll32.exe", "user32.dll,LockWorkStation") _Locked = True End If Return True Else Return False End If Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Function Public ReadOnly Property IsLocked() As Boolean Get Return _Locked End Get End Property Protected Overrides Sub Finalize() MyBase.Finalize() Try RemoveHandler SystemEvents.SessionSwitch, AddressOf SessionSwitch Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub End Class } ---- *comment このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。 #comment_num2 ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: