none
SetWindowsHookExから実行するメソッドから重い処理を行うと、高速でキークリックを繰り返した時重い処理が飛ぶことがあります RRS feed

  • 質問

  • MFCでビデオの再生のようなものを作っています。

    SetWindowsHookExでコマ送りキーを設定して、
    キークリックとビデオのフレームが同期して表示するようにしたいのですが、

    キーを連打すると、ビデオのフレームが正確に追随しない事が起きます。
     (キー10回連打で、ビデオ9フレーム分しか進まないという現象です)

    5年以上位前の低マシンスペックだと如実にでます。

    いい対処方法がありましたらご教授下さい。

    よろしくお願いします。

    2015年10月11日 5:41

回答

  • SetWindowsHookExで登録したフックプロシージャ内で重い処理を行ってはいけません。フックした対象のスレッド内で動作するので、正常に挙動しなくなる場合があります。フックプロシージャ内の処理はシンプルにして、別スレッドまたは別プロセスで重い処理を行ってください。

    実際にどうしたら解決できるのかは、現在の実装を示さないと、具体的なアドバイスは得られないかと思います。


    甕星

    • 回答としてマーク 星 睦美 2015年10月13日 0:11
    2015年10月11日 8:23

すべての返信

  • SetWindowsHookExで登録したフックプロシージャ内で重い処理を行ってはいけません。フックした対象のスレッド内で動作するので、正常に挙動しなくなる場合があります。フックプロシージャ内の処理はシンプルにして、別スレッドまたは別プロセスで重い処理を行ってください。

    実際にどうしたら解決できるのかは、現在の実装を示さないと、具体的なアドバイスは得られないかと思います。


    甕星

    • 回答としてマーク 星 睦美 2015年10月13日 0:11
    2015年10月11日 8:23
  • ご回答大変ありがとうございました。

    SetWindowsHookExから呼ばれている処理が大きいのと、実装をネットに載せる事はできませんので、とりあえず重い処理が別スレッドになっているかどうか調べてみます。

    2015年10月11日 9:13