C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 画面(ワークステーション)のロック状態を取得したい


(過去ログ 131 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■77635 / inTopicNo.1)  画面(ワークステーション)のロック状態を取得したい
  
□投稿者/ 総一郎 (1回)-(2015/11/09(Mon) 21:02:41)

分類:[Windows 全般] 

こんばんは、趣味でプログラミングをしています。言語はC,C++,C#のいずれかです。

Windows7以上ぐらいで動かしたい。
人が操作している時とそうで無い場合で動作を変えたいです。
人が操作している時=スクリーンセーバー動作中もしくは画面(ワークステーション)のロック状態ではないと考えました。

スクリーンセーバーの状態はSystemParametersInfo()で取得できました。
画面(ワークステーション)のロック状態を取得する方法が判りませんので教えてください。
あるいは、もっとこんな方法があるよ等があれば教えてください。


引用返信 編集キー/
■77638 / inTopicNo.2)  Re[1]: 画面(ワークステーション)のロック状態を取得したい
□投稿者/ (こ) (3回)-(2015/11/10(Tue) 09:49:16)
http://stackoverflow.com/a/770165 によると:

(1) 単発で取得するのなら OpenDesktop() -> SwitchDesktop() でデフォルトのデスクトップへの切り替えを試みる。失敗したらロック中。
(2) 通知を受け取りたいのなら WTSRegisterSessionNotification() を使う。ロック状態の切り替え時に WM_WTSSESSION_CHANGE メッセージが飛んでくる。
(3) サービスなら SetServiceStatus() + SERVICE_ACCEPT_SESSIONCHANGE を使う。

らしいです(当方未確認)。

C# の話は http://stackoverflow.com/a/604042 が参考になって、Microsoft.Win32.SessionSwitchEventHandler を登録しておくとロック状態切り替えを捕捉できるとか。
引用返信 編集キー/
■77651 / inTopicNo.3)  Re[2]: 画面(ワークステーション)のロック状態を取得したい
□投稿者/ 総一郎 (2回)-(2015/11/10(Tue) 23:18:29)
No77638 ((こ) さん) に返信

ありがとうございます。やりたい事ができそうです。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -