Visual Basic - Relanzar aplicaciones

Life is soft - evento anual de software empresarial
 
Vista:

Relanzar aplicaciones

Publicado por J.Bochs (1 intervención) el 28/01/2001 21:14:41
Mediante Shell el usuario de mi programa puede aperturar una serie de aplicaciones que el mismo puede redefinir. mi deseo es que si alguna de estas aplicaciones se encontrase minimizada, al querer relanzarla, en lugar de aperturarse una nueva instancia de la misma, se maximizara la ya existente y que se encuentra minimizada.

¿Es esto posible?.

Gracias por vuestra ayuda.

Saludos.

---------------------------------
J.Bochs
HUELVA
---------------------------------

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:Relanzar aplicaciones

Publicado por Ariopolis (159 intervenciones) el 29/01/2001 12:35:40
Con la función PrevInstance puedes detectar si ya existe una instancia de un objeto (mira la ayuda de VB).
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

RE:Relanzar aplicaciones

Publicado por Luis F Rivera G (1 intervención) el 02/02/2001 22:14:23
Puedes evitar que se vuelva a ejecutar, pero no he encontrado la forma de maximizar
la aplicacion que ya esta abierta. Coloca estas lineas en el Load de la forma
principal:

If App.PrevInstance Then 'si ya se está ejecutando
'Guardar el caption de esta aplicación
sCaption = Caption
'Cambiar el caption actual para que no se active esta
Caption = "cualquier cosa"

'Activar la otra instancia
AppActivate sCaption

'Terminar esta copia del programa
End
End If

'Continuar ya que no hay otra copia
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

RE:Relanzar aplicaciones

Publicado por J.Bochs (1 intervención) el 04/02/2001 22:15:23
Mi trabajo me ha costado pero entre unos y otros lo he conseguido, se trata de evitar relanzar una aplicación cuando ya está abierta una instancia de esta, es decir, si no está abierta ninguna instancia de la aplicación a la que se llama la abre y si existe alguna abierta, la hace visible y le da el foco.

Se trata de recuperar la ruta de los programas que se tienen en ejecución con las funciones del API 'Process32First' y 'Process32Next', después de abrir un snapshot de los procesos en ejecución con 'CreateToolhelp32Snapshot'. Seguidamente compara la ruta de cada programa que recupera del snapshot con la ruta del programa que estás a punto de ejecutarse.

Cuando acabes con el snapshot hay que cerrarlo con 'CloseHandle'.

Si resulta que ya está en ejecución, hay que obtener el identificador de
ventana a partir del identificador del proceso y mostrarla.

La función a la que tienes que llamar es 'Lanzar_Aplicacion', pasando como parámetro la ruta de
la aplicación que quieres lanzar, y ella se encarga de ejecutarla con 'Shell' o de mostrarla si ya está en ejecución.

En un módulo BAS

Private Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32.dll" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassN
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