C#で複数のウィンドウをフックするにはどうすればよいですか?
-
06-07-2019 - |
質問
フォーカスを失ったときにウィンドウ(アプリの外部)を透明にするアプリケーションを作成しようとしています。ほとんどのこと(ウィンドウIDの取得、透明度の設定など)は簡単ですが、1つだけ-ウィンドウをフックするにはどうすればよいですか?
解決
相互運用機能を使用できます。 SendMessage()関数を使用してウィンドウを送信しますカスタムメッセージ。その後、ウィンドウは SetLayeredWindowAttributes()を1回呼び出すことができます。その透明性を変更するためにそのメッセージを受け取ります。
もう1つは、 WM_KILLFOCUS
編集:
C#のDeactivateおよびActivatedイベントにラッチします。
private void Form1_Deactivate( object sender, EventArgs e ) { this.Opacity = 0.5 ; } private void Form1_Activated( object sender, EventArgs e ) { this.Opacity = 1.0 ; }
所属していません StackOverflow