Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] A Windows no le gusta mi programa

Estas en el tema de A Windows no le gusta mi programa en el foro de .NET en Foros del Web. Le implementé una función para se ejecute al iniciar sesión en Windows, en un principio parecía que no funcionaba aunque yo podía ver perfectamente en ...
  #1 (permalink)  
Antiguo 28/05/2013, 08:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 14 años, 5 meses
Puntos: 2
A Windows no le gusta mi programa

Le implementé una función para se ejecute al iniciar sesión en Windows, en un principio parecía que no funcionaba aunque yo podía ver perfectamente en el registro de Windows que mi programa estaba en la lista.

Código vb:
Ver original
  1. Private Function start_Up(ByVal bCreate As Boolean) As String
  2.         Const key As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
  3.         Dim subClave As String = Application.ProductName.ToString
  4.         Dim msg As String = ""
  5.  
  6.         Try
  7.             Dim Registro As RegistryKey = CurrentUser.CreateSubKey(key, RegistryKeyPermissionCheck.ReadWriteSubTree)
  8.             With Registro
  9.                 .OpenSubKey(key, True)
  10.                 Select Case bCreate
  11.                     Case True
  12.                         .SetValue(subClave, _
  13.                                   Application.ExecutablePath.ToString)
  14.                     Case False
  15.                         If .GetValue(subClave, "").ToString <> "" Then
  16.                             .DeleteValue(subClave)
  17.                         End If
  18.                 End Select
  19.             End With
  20.         Catch ex As Exception
  21.             msg = ex.Message.ToString
  22.         End Try
  23.         Return Nothing
  24.     End Function
  25.  
  26.  
  27.     Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
  28.         If CheckBox1.Checked = True Then
  29.             ' Código para añadir a inicio
  30.            start_Up(True)
  31.             My.Settings.RunAtStart = True
  32.             My.Settings.Save()
  33.         Else
  34.             ' Código para quitar de inicio
  35.            start_Up(False)
  36.             My.Settings.RunAtStart = False
  37.             My.Settings.Save()
  38.         End If
  39.     End Sub

Probé a hacer un proyecto nuevo con un formulario vacío y éste sí se iniciaba correctamente. Luego se me ocurrió añadirle a mi programa un "NotifyIcon" para ver si al menos llegaba a mostrarse el icono del programa en el área de notificaciones de la barra de tareas, y sí, se mostraba el icono durante unos segundos y luego desaparecía.

Entonces lo que veo que pasa, es que Windows comienza a abrir la aplicación, y por alguna razón decide no seguir y cerrarla. Pero esto sólo ocurre en el inicio automático, abrirla manualmente no da ningún problema.

¿Alguien que al menos me pueda confirmar el poco sentido que tiene esto?

Dejo aquí la dirección al proyecto en Github por si a alguien le interesa probarlo por sí mismo: https://github.com/vistaero/TARDIS

EDITO: Acabo de hacer la prueba borrando todo el código en Form1 Load, ahora la aplicación sí termina de abrirse cuando se inicia con Windows, así que el problema está localizado ahí.

EDITO 2: Por alguna razón, un programa iniciando automáticamente por Windows se comporta de forma ligeramente distinta que iniciado manualmente. Metí todo el código sospechoso dentro de un:

Código vb:
Ver original
  1. Try
  2. ' Aquí todo el código en el que se debía encontrar el problema
  3. Catch ex As Exception
  4.             MsgBox(ex.Message)
  5.         End Try

La siguiente vez que cerré y abrí sesión, me salió un mensaje de error describiendo el fallo, gracias al cual pude corregirlo y ya el programa se inicia con Windows sin el menor problema.

Última edición por vistaero; 28/05/2013 a las 11:44

Etiquetas: gusta, programa, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:53.