Crear ventanas que no reciban el foco

25/01/2005 - 22:52 por Pepe | Informe spam
Saludos,

Me gustaría saber como puedo crear una ventana no modal,
que al crearla no se active (y no reciba el foco).

Como por ejemplo, en Outlook, cuando llega uncorreo,
aparece una pequeña ventana de notificación, pero ésta
nunca se activa. Igual sucede con el messenger cuando hay
notificaciones de correo nuevo.

De igual manera como puedo evitar que dicha ventana no se
active, como por ejemplo el teclado en pantalla de
microsoft.

Gracias.
 

Leer las respuestas

#1 Octavio Hernandez
26/01/2005 - 00:13 | Informe spam
Pepe,

Creo que el truco está en mostrar la ventana utilizando el estilo
SW_SHOWNOACTIVATE (tiene que ser con la API de WIndows).
Prueba este código:

[DllImport("User32.dll")]
public extern static int ShowWindow(IntPtr hWnd, Int32 cmdShow);

const Int32 SW_SHOWNOACTIVATE = 4;

[DllImport("User32.dll")]
public extern static bool SetWindowPos(
IntPtr hWnd, // handle to window
Int32 hWndInsertAfter, // placement-order handle
Int32 X, // horizontal position
Int32 Y, // vertical position
Int32 cx, // width
Int32 cy, // height
Int32 uFlags // window-positioning options
);

const Int32 SWP_NOACTIVATE = 0x0010;
const Int32 HWND_TOPMOST = -1;

private void button1_Click(object sender, System.EventArgs e)
{
Form f = new Form();
ShowWindow(f.Handle,SW_SHOWNOACTIVATE);
SetWindowPos(f.Handle,HWND_TOPMOST,0,0,f.Width,f.Height,SWP_NOACTIVATE);
}


"Pepe" escribió en el mensaje
news:1fdb01c50328$1fe08470$
Saludos,

Me gustaría saber como puedo crear una ventana no modal,
que al crearla no se active (y no reciba el foco).

Como por ejemplo, en Outlook, cuando llega uncorreo,
aparece una pequeña ventana de notificación, pero ésta
nunca se activa. Igual sucede con el messenger cuando hay
notificaciones de correo nuevo.

De igual manera como puedo evitar que dicha ventana no se
active, como por ejemplo el teclado en pantalla de
microsoft.

Gracias.

Preguntas similares