[DUDA] ¿Cómo hacer que un programa no abra haciendo doble clic?

Iniciado por XorNet, 8 Diciembre 2013, 21:21 PM

0 Miembros y 1 Visitante están viendo este tema.

XorNet

Bueno lo que trato de hacer es que un programa que ya hice no se abra haciéndole doble clic sino que se abra mediante otro programa ya sea apretando un botón o 'x' evento. Ayuda por favor. n_n

Eleкtro

#1
Sin otro factor intermediario en mi opinión es complétamente absurdo cancelar la ejecución de la aplicación al iniciarla haciendo doble click pero no cancelarla al iniciarla desde otro sitio, para mi no tiene sentido,
dicho factor intermediario que podrías usar es un Argumento, es decir, desde la aplicación secundaría ejecutas la aplicación y le envías un parámetro para asegurar de que la aplicación cumple las condiciones necesarias para proseguir con su inicio.

Ejemplo:
Código (vbnet) [Seleccionar]
Process.Start("Aplicación.exe", "ForceRun")

Puedes evaluar el argumento pasado a la aplicación, si el argumento no es igual a "X", entonces terminas la ejecución.

En este ejemplo uso los eventos de la aplicación (Startup) ya que se da lugar antes de que se cree la ventana, pero puedes evaluarlo en el Evento Load o donde prefieras.

Código (vbnet) [Seleccionar]
Namespace My

   Partial Friend Class MyApplication

       Private Shadows Sub Startup() Handles MyBase.Startup

           Dim Arg As String = My.Application.CommandLineArgs.FirstOrDefault

           If String.IsNullOrEmpty(Arg) _
           OrElse Not Arg.Equals("ForceRun", StringComparison.InvariantCultureIgnoreCase) Then
               End
           End If

       End Sub

   End Class

End Namespace


De esta manera, la aplicación sólamente se iniciará si le pasas el argumento,
quizás exista alguna forma de averiguar si un proceso se ha iniciado desde el explorer por la intervención del ratón, es un misterio muy interesante la verdad, pero al menos yo desconozco si eso es algo posible de averiguar, y dudo que sea nada factible puesto que es la Shell quien se encarga de interpretar ese Click, puedes hacer doble click en un acceso directo (.lnk) que esté asociado a la aplicación ¿Como se interpreta entonces ese Click?, desde luego sería muy dificil por no decir imposible que llegase a ser eficiéntemente detectado, espero que la solución alternativa que te he ofrecido te sirva, a mi parecer es la más eficaz además de sencilla.

Saludos!