• ベストアンサー

SYSTEMユーザで動くサービス(Windows)において

現在SYSTEMユーザで動かすことを前提としたWindowsサービスプログラミングを行っています。 そのプログラムにおいてキーボードの状態を取得したいのですが、GetAsyncKeyStateやGetKeyStateなどのAPIは正常に動作しませんでした。 どのようにしてキーボードの状態を取得すればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

プロパティにある「デスクトップとの会話をサービスに許可」が可能に 設定されていますか? 許可されていない場合は許可してみてください。

kenken3paa
質問者

お礼

早々に回答ありがとうございます。チェックを設定したところ正常に動作しました。 ところでこの設定をすることは推奨されていないと聞いたことがあります。 この設定をせずに取得する方法はないのでしょうか?

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

>この設定をせずに取得する方法はないのでしょうか? 私の知る限り、ないです。 コレを設定しないと、サービスが相手にしている画面やキーボードと 人間が相手にしている画面やキーボードは別の世界のモノになって しまいます。GetAsyncKeyState は正常動作しますが、あなたが見て いるキーボードを対象にした結果ではありません。 >この設定をすることは推奨されていない そんなことはないと思いますよ。どんな根拠があるんでしょう? まあ、素人の人が勝手に管理ツールのサービスのプロパティを イジルなと言うことなんでしょうが、必要ならしょうがないのでは?

kenken3paa
質問者

お礼

把握しました。ありがとうございます。

関連するQ&A