Picacodigos
« No ejecutar más de una vez el mismo proc...
|
Mas Reciente
|
IE7 Beta 2 »
Hacer invisible un formulario
Published 140 weeks, 6 days ago
Wed
Jan
25
2006
Otro truco interesante, que me tuvo un poco martirizado hasta que lo encontré, es el siguiente. Imaginaos que estamos desarrollando una aplicación que va a residir en el área de notificación de Windows. Hay multitud de tutoriales en Internet al respecto, así que no profundizaré en ello. Pero un pequeño detalle me traía por la calle de la amargura: cuando hacía ALT+TAB, en la lista de ventanas disponibles aparecía la de mi aplicación; a pesar de ser invisible. Y yo sólo quería que la aplicación apareciera como visible,... bueno, pues cuando
realmente
fuera visible, si me perdonáis la perogrullada.
Tras mucho navegar, encontré lo siguiente:
//Impide que la aplicación sea visible al hacer ALT+TAB
private const int
GWL_EXSTYLE
=
(-
20
)
;
private const int
WS_EX_TOOLWINDOW
=
0x80
;
private const int
WS_EX_APPWINDOW
=
0x40000
;
[DllImport(
"user32"
, CharSet
=
CharSet.Auto)]
private static extern int
GetWindowLong(IntPtr hWnd,
int
nIndex)
;
[DllImport(
"user32"
, CharSet
=
CharSet.Auto)]
private static extern int
SetWindowLong(IntPtr hWnd,
int
nIndex,
int
dwNewLong)
;
private void
frmMain_Activated(
object
sender, EventArgs e)
{
SetWindowLong(
this
.Handle, GWL_EXSTYLE, (GetWindowLong(
this
.Handle,
GWL_EXSTYLE) | WS_EX_TOOLWINDOW) & ~WS_EX_APPWINDOW)
;
}
Colorized by:
CarlosAg.CodeColorizer
Como podéis ver, este código API de Win32 lo único que hace es aplicar un estilo determinado a la ventana actual. Llamar a la API en el evento Activated del form asegura que la aplicación será invisible desde un buen principio. Por cierto, que esto está probado con una aplicación que tiene
dos
formularios, y el inicial sólo sirve para contener el menú contextual y el icono de la bandeja de notificación, por lo que nunca será necesario que sea visible.
La aplicación en concreto es una pequeña utilidad que sirve para rotar periódicamente el fondo de escritorio de Windows, y alguna otra cosilla hace, y que lleva rondando por mis equipos un montón de tiempo. Está
casi
terminada, al menos la versión 1.0, pero a ver cuándo tengo tiempo de adecentarla para poder enseñarla.
Categorías:
Trucos
|
Comments [0]
Comments are closed.
Buscar
Estadísticas
Total Posts: 112
This Year: 3
This Month: 0
This Week: 0
Comments: 328
Comentarios Recientes
RE: Microsoft Techdays y...
by Erick Alejan...
RE: Microsoft Techdays y...
by Venkman
RE: Microsoft Techdays y...
by Jesús
RE: Microsoft Techdays y...
by espinete
RE: Microsoft Techdays y...
by Pavleras
Software
Peeker
Acerca de...
Curriculum
Resume
Suscripcion
Suscribirse por correo
Categorias
.NET
Artículos
Blog
Eventos
Gadgets
Hardware
Herramientas
Opinión
Personal
ReSharper
Trucos
Ubuntu
Web
Archivo
January, 2008 (3)
December, 2007 (7)
November, 2007 (13)
October, 2007 (6)
September, 2007 (10)
August, 2007 (1)
July, 2007 (2)
June, 2007 (4)
May, 2007 (3)
March, 2007 (3)
February, 2007 (5)
January, 2007 (5)
December, 2006 (3)
November, 2006 (5)
September, 2006 (2)
August, 2006 (4)
July, 2006 (7)
June, 2006 (3)
May, 2006 (4)
April, 2006 (5)
March, 2006 (5)
February, 2006 (4)
January, 2006 (3)
Los blogs que leo
.Avery Blog
47 hats
Coding Horror
El lado del mal
Haacked
Jon Galloway
NET slave
Rob Conery
secretGeek
The daily WTF
The old new thing
Thinking in .NET
Velocidad de Escape
Contacto
Microblogging
Login
Sign In
Herramientas
Addicted to
The best C# & VB.NET refactoring plugin for Visual Studio 2005
Powered by
newtelligence dasBlog 1.9.7174.0
Tema basado en
Dandelion
, de Tim Sherrill