とても便利なステータス表示系のソフトが有るのですが、
このソフトがちょっと大きすぎて画面を専有してしまいます
便利なので変えたくはないので、
このソフトにマウスが乗ったら透明化するようにしたいです
ウィンドウプロシージャを改変してマウスメッセージが来たら自分のウィンドウに対して
ShowWindowで表示方法を変えるような感じにできるのでしょうか?
SetWindowsHookEx()でDLLを対象プロセスへ注入できますが、
ここからウィンドウプロシージャの改変は可能でしょうか?
ウィンドウプロシージャの改変ができるのであれば
別にDLLインジェクションだけでなくてもがんばります
ソフトのウィンドウプロシージャを改変する方法
Re: ソフトのウィンドウプロシージャを改変する方法
ウィンドウプロシージャを乗っ取ることを『サブクラス化』と呼びます。
他のプロセスに属するウィンドウをサブクラス化するにはメッセージフックによるDLLの注入と組み合わせて行う必要があります。
「サブクラス化 {別プロセス|他プロセス}」でGoogle検索
他のプロセスに属するウィンドウをサブクラス化するにはメッセージフックによるDLLの注入と組み合わせて行う必要があります。
「サブクラス化 {別プロセス|他プロセス}」でGoogle検索
Re: ソフトのウィンドウプロシージャを改変する方法
考え方としてなんですが・・・。
ソフトのウインドウプロシージャを乗っ取るのではなく。
グローバルフックを掛け、お目当てのウインドウハンドルを取得し、
そのウインドウ上にカーソルが乗ったらShowWindowを掛けるソフトを書いた方が早いかなぁ・・・?と感じました。
やったことないですが、SetWindowLongPtr関数でウインドウプロシージャの書き換えができるようです。
FindWindowあたりでウインドウハンドルを取得して書き換えればいけるかもしれません。
ソフトのウインドウプロシージャを乗っ取るのではなく。
グローバルフックを掛け、お目当てのウインドウハンドルを取得し、
そのウインドウ上にカーソルが乗ったらShowWindowを掛けるソフトを書いた方が早いかなぁ・・・?と感じました。
やったことないですが、SetWindowLongPtr関数でウインドウプロシージャの書き換えができるようです。
FindWindowあたりでウインドウハンドルを取得して書き換えればいけるかもしれません。
Re: ソフトのウィンドウプロシージャを改変する方法
それがサブクラス化なんですよね。taketoshi さんが書きました:やったことないですが、SetWindowLongPtr関数でウインドウプロシージャの書き換えができるようです。
Re: ソフトのウィンドウプロシージャを改変する方法
>ISLeさん
ウィンドウプロシージャののっとりで行けるんですねありがとうございます
>taketoshiさん
マウスフックをやったことがあるので「ウインドウ上にカーソルが乗ったら~」の方法も
挑戦してみようと思います
ちょっと今忙しいので、実装はもう少しあとになるかもしれませんが
方針が立ったのでこれにて解決とさせていただきます
ありがとうございましたm(_ _)m
ウィンドウプロシージャののっとりで行けるんですねありがとうございます
>taketoshiさん
マウスフックをやったことがあるので「ウインドウ上にカーソルが乗ったら~」の方法も
挑戦してみようと思います
ちょっと今忙しいので、実装はもう少しあとになるかもしれませんが
方針が立ったのでこれにて解決とさせていただきます
ありがとうございましたm(_ _)m