Maximizar - minimizar aplicaciones externas
Publicado por jmlai (1 intervención) el 19/04/2020 11:42:00
Buenas,
Quiero poder maximizar y minimizar aplicaciones que están corriendo en windows mediante una aplicación.
He visto diferentes ejemplos en internet pero ninguno me funciona.
He visto que hace falta usar las funciones Showwindow y findwindow de user32.dll.
Cuando llego a la función Showwindow me salta la excepción "Se detecto PInvokestackinbalance". Una llamada a la función PInvoke 'Abrir aplicaciones!Abrir_aplicaciones.Form1::ShowWindow' impidió la correspondencia de la pila. Es posible que la razón sea que la signatura PInvoke administrada no coincida con la signatura de destino no administrada. Compruebe que la convención y los parámetros de llamada de la signatura PInvoke coinciden con la signatura no administrada de destino.
No se si el handle que entra en la función es correcta o no. ¿Hay forma de verificar con Spy++ que el handle que se obtiene de FindWindow es la de la aplicación?
El codigo que he usado es el siguiente:
Quiero poder maximizar y minimizar aplicaciones que están corriendo en windows mediante una aplicación.
He visto diferentes ejemplos en internet pero ninguno me funciona.
He visto que hace falta usar las funciones Showwindow y findwindow de user32.dll.
Cuando llego a la función Showwindow me salta la excepción "Se detecto PInvokestackinbalance". Una llamada a la función PInvoke 'Abrir aplicaciones!Abrir_aplicaciones.Form1::ShowWindow' impidió la correspondencia de la pila. Es posible que la razón sea que la signatura PInvoke administrada no coincida con la signatura de destino no administrada. Compruebe que la convención y los parámetros de llamada de la signatura PInvoke coinciden con la signatura no administrada de destino.
No se si el handle que entra en la función es correcta o no. ¿Hay forma de verificar con Spy++ que el handle que se obtiene de FindWindow es la de la aplicación?
El codigo que he usado es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'Función Api FindWindow para buscar el HWND
Private Declare Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
' Función ShowWindow para maximizar , minimizar etc..
Private Declare Function ShowWindow _
Lib "user32" ( _
ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Const SW_MINIMIZE As Integer = 2
Const SW_MAXIMIZE As Integer = 3
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim Handle As Long
Handle = FindWindow(vbNullString, "NOTEPAD")
ShowWindow(Handle, SW_MINIMIZE)
End Sub
Valora esta pregunta


0