マウスのクリックイベント拾えない場合の解決方法について

タグの編集
投稿者 eigyou  (社会人) 投稿日時 2019/5/25 16:06:07
毎度お世話になります

AxWindowsMediaPlayerコントロール利用しています
再生画を範囲指定してスクリーンコピーしたいのですが、マウスのクリックイベントが
拾えずちと困っています
範囲指定は、ControlPaint.DrawReversibleFrameを使って、反転 移動 旧箇所戻す
新箇所反転で、動作させています

とりあえず、クリックが拾えないので、フォームのKeyPreviewプロパティをTrueに変更
してKeyPressイベントをクリック代わりにしていますが
やっぱ かっこ悪いので、何か方法ないでしょうか?

以上よろしくお願いします
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2019/5/25 22:49:53
案1) Opacity プロパティを変更した TopMost = True な別フォームを重ね合わせ、
 その別フォーム側でマウスイベントを捉えたり描画したりする

案2) RawInput / DirectInput を用いて、アクティブなウィンドウ以外に対する
 マウス操作を追跡するようにする

しかしながら、マウス云々の話は別に考えるとしても、
Media Player 側がオーバーレイ表示になっている場合、
そもそもキャプチャできない可能性があり、その場合は
前提条件から見直しが必要になるかもしれません。
https://at.sachi-web.com/blog-entry-221.html

(DirectShow で、画面上に重ね合わせてレンダリングするとかはできるかもしれませんが)
投稿者 eigyou  (社会人) 投稿日時 2019/5/26 20:05:19
魔界の仮面弁士様

回答ありがとうございます

案2は、よく判らないので、ご教授頂いた 案1で行こう
と思います

そういえば、オーバレイで、スクリーンコピーが 昔は真っ黒でした

現在の環境では、問題なくキャプチャで来ています

pixcel単位の処理が遅く、またもや 別スレッド処理が必要に・・・・。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2019/5/27 11:22:16
マウス指定した範囲をキャプチャするコードです。
9年前に作成したサンプルですが、参考までに。
http://www.vb-user.net/junk/replySamples/2010.02.08.14.53/Clipping.txt
投稿者 eigyou  (社会人) 投稿日時 2019/5/27 20:58:27
魔界の仮面弁士様

具体的な参考コードまでありがとうございます

教えて頂いた、透明化で、フォームの重ね合わせでうまくいきました

ただ、透過度を0%にするとControlPaint.DrawReversibleFrameが表示されず

1%だと、正常に表示されるので、選択時だけですので、1%で動作させています