2009-06-21 6 views
0

Ich versuche eine Anwendung zu erstellen, die ein Fenster (außerhalb der App) transparent macht, wenn es den Fokus verliert. Die meisten Dinge (Fensteridentifizierung, transparente Darstellung usw.) wären einfach, außer einer Sache - wie hake ich Fenster?Wie kann ich mehrere Fenster in C# haken?

+0

Angenommen, das ist WinForms ... – Noldorin

+0

@Noldorin // Ja – Moon

Antwort

1

Sie können Interop verwenden. Verwenden Sie die Funktion SendMessage(), um Ihrem Fenster eine benutzerdefinierte Nachricht zu senden. Das Fenster kann dann SetLayeredWindowAttributes() aufrufen, sobald Sie diese Nachricht erhalten, um ihre Transparenz zu ändern.

Die andere Sache ist, dass Sie wirklich in der Lage sein sollten, das Fenster selbst zu drehen zu lassen transparent, wenn es den Fokus verliert WM_KILLFOCUS

EDIT durch Zuhören:

Latch auf die Deaktivieren und aktivierten Ereignisse in C#.

 
    private void Form1_Deactivate(object sender, EventArgs e) 
    { 
     this.Opacity = 0.5 ; 
    } 

    private void Form1_Activated(object sender, EventArgs e) 
    { 
     this.Opacity = 1.0 ; 
    }