Lo importante es que la aplicación se ejecute en segundo plano, o sea, que en el administrador de tareas no salga en el listado de aplicaciones y que si salga en el listado de procesos en segundo plano. Algo que ocurre automaticamente en VB6 al usar App.Taskvisible = False, pero en .NET no se como sería.
Gracias
por todas las ideas
Este código me resuelve el problema, pero si alguien lo puede mejorar o tiene otra idea, bienvenida sea
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer
Private Const SW_HIDE = 0
Private Const SW_SHOW = 5
Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
Dim h As Long
h = FindWindow(vbNullString, "Form1")
If h > 0 Then
ShowWindow(h, SW_HIDE)
Sleep(20000)
ShowWindow(h, SW_SHOW)
End If
End Sub
Es suficiente con que a la ventana le asignes el estilo de ventana extendido WS_EX_TOOLWINDOW, puedes hacerlo mediante la API de Windows con las funciones SetWindowLong o SetWindowLongPtr dependiendo de la arquitectura, o con la propiedad FormBorderStyle del Form:
Me.FormBorderStyle = FixedToolWindow
Esto conlleva unos cambios visuales en la ventana con los que puede que tengas que hacer más trabajo del necesario si no te agrada lo suficiente (me refiero a lidiar con el area no cliente de la barra de título para añadir más botones).
Saludos!