2012-02-29 20 views
5

Deseo escribir una aplicación para procesar determinadas acciones de usuario.Aplicación de ventana transparente para superposición en Windows

La aplicación será siempre transparente y debe hacerse clic. Entonces, se verá la ventana detrás y cuando la aplicación transparente haga clic, debería poder hacer clic en la ventana de atrás. Solo ciertas acciones de usuario (como hacer doble clic) quiero gestionar en mi aplicación transparente.

¿Es posible lograr esto? Cualquier guía es apreciada.

Respuesta

3

Puede hacer clic falsa ventana de su aplicación:

[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 
} 

Ahora con doble click se puede establecer cualquier cosa que quiera.

+0

¿Cómo harías para asegurarte de que esta forma falsa está en la parte superior? Cuando el usuario trae algún otro formulario al principio del orden z, este formulario no recibirá el doble clic. –

+0

@ DavidHeffernan-sí, eso es un problema de hecho. – Jimmy

+0

@David Heffernan, Hombre común: 'this.TopMost = true;' –

1

Puede hacer que una ventana sea transparente y hacer clic. Sin embargo, es todo o nada. No se puede hacer clic a través de dos clics.

Por lo tanto, para hacer lo que quiera, creo que tendrá que utilizar un gancho de mouse global para manejar los clics dobles. Pero eso requerirá un código nativo.

De hecho, pensándolo bien, ¿por qué necesita la ventana de clic transparente?

+0

al hacer presentaciones o capacitación que podría dar el capacidad de mejorar la experiencia. Por ejemplo, podría subrayar/circular una parte de la aplicación/presentación que estoy mostrando. – Jimmy

+0

Ya hay muchas utilidades que hacen eso. –

+1

Sí, pero me gustaría tener la capacidad de ampliar la funcionalidad. No he visto ninguna utilidad de código abierto que pueda extender. – Jimmy

Cuestiones relacionadas