Visual Basic - Detectar que un programa ya está en marcha

Life is soft - evento anual de software empresarial
 
Vista:

Detectar que un programa ya está en marcha

Publicado por Alberto (3 intervenciones) el 23/10/2001 09:23:07
Hola. Me gustaría saber cómo puedo detectar si un determinado programa ya está en marcha antes de arrancar otro. Tengo un programa sobre WNT que a veces no se cierra del todo, y me gustaría saber cómo detecto remotamente si está activo, y si es así apagarlo.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Detectar que un programa ya está en marcha

Publicado por BENJO (82 intervenciones) el 27/10/2001 16:46:12
La mejor manera es utilizando en el load del form inicial o en el Main que inicia tu programa, la sentencia App. Previnstance , el cual te devuelve true si es que la aplicación ya se encuentra levantada.
en este caso, podés bajarla usando la API FindWindows y el nombre de la ventana , para que te devuelva el handle y después la API SendMessage lo cerrás.
Ejemplo:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long

Private Const WM_CLOSE = &H10
Private sub CommandButton_Click( )
Dim z as Long
Dim Ventana as String '
Ventana= "Calculadora"
z = FindWindow(vbNullString,Ventana) ' Busca la ventana y si la encuentra prendida, carga su handle en la variable z
If z <> 0 then
call SendMessage(z, WM_CLOSE, 0, 0)
else
msgbox " No está la calculadora prendida"
endif
en sub

Este código funciona bien sobre WinX, pero realmente no se si funciona sobre NT, espero que así, sea, sino que algún alma caritativa de este foro te lo perfeccione para que surja efecto.
Buena suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar