人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Win2000のAPI(LockWorkStation)でコンピュータのロックをかけることができますが、ロックをかける前にロックしているかどうかを確認する方法は?

●質問者: ohmix1
●カテゴリ:コンピュータ
✍キーワード:API いるか コンピュータ ロック
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ken_na8c
●25ポイント

http://gethelp.devx.com/techtips/nt_pro/10_minute_solutions/10mi...

Determining If a Workstation Is Locked

この記事によると、直接ロックのステータスをとるような手段はないそうです。

回避策として、

バックグラウンドで別プロセスのアプリケーションを起動し、

switchさせたときにerrorとなるかどうか

でLockのステータスを確認する方法が紹介されています。

◎質問者からの返答

すばらしい。こんな手があるとは...

テストプログラムでは今のところ期待通りの動きをしています。


2 ● suzuki1972
●25ポイント

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

このページは、存在しないか、削除されています。

SwitchDesktop( ) が、不可視のデスクトップではエラーを返すそうです。

あとは、スクリーンセーバーが起動中かどうかを判定すればよいかもしれません。

直接的な回答ではなく申し訳ないですが、参考になれば幸いです。

◎質問者からの返答

ありがとうございます。SwitchDesktopについては確認が取れました。

HDESK hDsek = GetThreadDesktop(GetCurrentThreadId());

BOOL bIsLock = FALSE;

if (hDsek != NULL && SwitchDesktop(hDsek)) bIsLock = TRUE;

>あとは、スクリーンセーバーが起動中かどうかを判定すればよいかもしれません。

偶然にも、

「Inside Windows 1997 No.8 スクリーンセーバの実行を検知する」

を持っていたので何とかなりそうです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ