ソフトのウィンドウプロシージャを改変する方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
shiro4ao
記事: 224
登録日時: 13年前
住所: 広島

ソフトのウィンドウプロシージャを改変する方法

#1

投稿記事 by shiro4ao » 10年前

とても便利なステータス表示系のソフトが有るのですが、
このソフトがちょっと大きすぎて画面を専有してしまいます
便利なので変えたくはないので、
このソフトにマウスが乗ったら透明化するようにしたいです

ウィンドウプロシージャを改変してマウスメッセージが来たら自分のウィンドウに対して
ShowWindowで表示方法を変えるような感じにできるのでしょうか?
SetWindowsHookEx()でDLLを対象プロセスへ注入できますが、
ここからウィンドウプロシージャの改変は可能でしょうか?

ウィンドウプロシージャの改変ができるのであれば
別にDLLインジェクションだけでなくてもがんばります

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: ソフトのウィンドウプロシージャを改変する方法

#2

投稿記事 by ISLe » 10年前

ウィンドウプロシージャを乗っ取ることを『サブクラス化』と呼びます。
他のプロセスに属するウィンドウをサブクラス化するにはメッセージフックによるDLLの注入と組み合わせて行う必要があります。

「サブクラス化 {別プロセス|他プロセス}」でGoogle検索

taketoshi
記事: 222
登録日時: 13年前
住所: 日本国

Re: ソフトのウィンドウプロシージャを改変する方法

#3

投稿記事 by taketoshi » 10年前

考え方としてなんですが・・・。

ソフトのウインドウプロシージャを乗っ取るのではなく。
グローバルフックを掛け、お目当てのウインドウハンドルを取得し、
そのウインドウ上にカーソルが乗ったらShowWindowを掛けるソフトを書いた方が早いかなぁ・・・?と感じました。

やったことないですが、SetWindowLongPtr関数でウインドウプロシージャの書き換えができるようです。
FindWindowあたりでウインドウハンドルを取得して書き換えればいけるかもしれません。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: ソフトのウィンドウプロシージャを改変する方法

#4

投稿記事 by ISLe » 10年前

taketoshi さんが書きました:やったことないですが、SetWindowLongPtr関数でウインドウプロシージャの書き換えができるようです。
それがサブクラス化なんですよね。

アバター
shiro4ao
記事: 224
登録日時: 13年前
住所: 広島

Re: ソフトのウィンドウプロシージャを改変する方法

#5

投稿記事 by shiro4ao » 10年前

>ISLeさん
ウィンドウプロシージャののっとりで行けるんですねありがとうございます

>taketoshiさん
マウスフックをやったことがあるので「ウインドウ上にカーソルが乗ったら~」の方法も
挑戦してみようと思います


ちょっと今忙しいので、実装はもう少しあとになるかもしれませんが
方針が立ったのでこれにて解決とさせていただきます
ありがとうございましたm(_ _)m

閉鎖

“C言語何でも質問掲示板” へ戻る