2012-02-29 19 views
5

Desidero scrivere un'applicazione per elaborare determinate azioni dell'utente.Applicazione finestra trasparente da sovrapporre in Windows

L'applicazione sarà sempre trasparente e dovrebbe essere click-through. Quindi, verrà visualizzata la finestra sottostante e poiché l'applicazione trasparente è visibile, dovrei poter fare clic sulla finestra dietro. Solo alcune azioni dell'utente (come il doppio clic) che voglio gestire nella mia applicazione trasparente.

È possibile raggiungere questo obiettivo? Qualsiasi linea guida è apprezzata.

risposta

3

Si può fare finta finestra click dalla tua app:

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)] 
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); 

    private const int MOUSEEVENTF_LEFTDOWN = 0x02; 
    private const int MOUSEEVENTF_LEFTUP = 0x04; 
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08; 
    private const int MOUSEEVENTF_RIGHTUP = 0x10; 

private void Form_MouseClick(object sender, MouseEventArgs e) 
{ 
    this.Hide(); 
    Point p = this.PointToScreen(e.Location); 
    mouse_event(MOUSEEVENTF_LEFTDOWN , p.X, p.Y, 0, 0); 
    mouse_event(MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0); 
    this.Show();//since this.opacity = 0; form will never be really visible 
} 

Ora in doppio click è possibile impostare quello che volete.

+0

Come faresti per assicurarti che questa forma finta sia al top? Quando l'utente porta un altro modulo all'inizio dell'ordine z, questo modulo non riceverà il doppio clic. –

+0

@ DavidHeffernan-sì, questo è davvero un problema. – Jimmy

+0

@David Heffernan, uomo comune: 'this.TopMost = true;' –

1

È possibile creare una finestra trasparente e fare clic. Tuttavia, è tutto o niente. Non puoi fare clic oltre a doppio clic.

Quindi, per fare ciò che vuoi credo che sarà necessario utilizzare un gancio del mouse globale per gestire i doppi clic. Ma questo richiederà un codice nativo.

In effetti, vieni a pensarci, perché hai bisogno della finestra trasparente click-through?

+0

quando si fanno presentazioni o allenamenti che potrebbero dare capacità di migliorare l'esperienza. Per esempio potrei sottolineare/cerchiare una parte dell'applicazione/presentazione che sto mostrando. – Jimmy

+0

Esistono già molte utilità che lo fanno. –

+1

Sì, ma mi piacerebbe avere la possibilità di estendere la funzionalità. Non ho visto nessuna utility open source che possa estendere. – Jimmy

Problemi correlati