如何在C#中挂钩多个窗口?

时间:2009-06-21 11:24:41

标签: c# windows winforms hook transparent

我正在尝试创建一个应用程序,当它失去焦点时,使窗口(应用程序外部)透明。大多数事情(获得窗口ID,设置透明等)都很容易,除了一件事 - 如何挂钩窗户?

1 个答案:

答案 0 :(得分:1)

您可以使用互操作。使用SendMessage()功能向您的窗口发送自定义消息。一旦收到该消息,窗口就可以调用SetLayeredWindowAttributes()来改变其透明度。

另一件事是你真的应该能够通过倾听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 ;
    }