none
UAC(ユーザーアカウント制御)の画面が出ているかを判別したい

    質問

  • Desktop Duplication APIを使用してスクリーンキャプチャーしているのですが、UACの画面が表示されると(暗転した状態になると)、AcquireNextFrame関数がエラーとなり、UACの画面を閉じてからもリトライで復帰できなくなります。

    対策として、UACの画面が表示されてエラーとなってしまった場合は、画面を閉じてからやり直そうと考えています。

    そこで、UACの画面が出ているかどうかを判別する方法をご存知でしたらご教示願います。


    マンモス

    2017年10月25日 8:09

回答

すべての返信

  • GetUserObjectInformation( OpenInputDesktop(), UOI_NAME ) で分かりそうな気がしますが。どうでしょうか?
    • 回答としてマーク マンモス 2017年10月26日 7:10
    2017年10月25日 9:02
  • ご指導いただきありがとうございます。

    OpenInputDesktop(0, FALSE, DESKTOP_READOBJECTS) を実行してみたところ、UAC画面を表示している時は関数が失敗、表示していない時は関数が成功するようですので、UAC画面あり/なしの判別に使用できそうです。

    ただ、他のケースで上記関数が失敗するケースがあるのではないかと調べてみたところ、「Ctrl+Alt+Del」で表示される画面(「ロック」「ユーザーの切り替え」などが表示されている画面)がありました。

    確認してみたところ、この画面が表示されてもAcquireNextFrame関数がエラーになっていましたので、OpenInputDesktop関数を利用することで「UAC画面」「Ctrl+Alt+Del」いずれにも対応することができました。

    大変ありがとうございました。


    マンモス

    2017年10月26日 7:49