Autor
|
Tema: Ayuda con AppActivate (Leído 9,385 veces)
|
NsTeam
Desconectado
Mensajes: 127
|
weno lo que quisiera saber es que
cual es el codigo para que appactivate No simplemente se active en
dicha ventana
sino que se active en cual quier ventana de windows
Ejemplo:
AppActivate "Bloc de notas"
Que se active No solo en el bloc de notas
sino en cualquier ventana de windows
Espero Sus respuestas =)
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Usa FindWindows o FindWindowsEX (Algo asi se encribia jojo) despues pasale SetForegroundWindow
Correcion:
FindWindow o FindWindowEx (Para obtener el Handle) SetForegroundWindow (Para traerla al frente)
P.D.: revisa la Api-Guide para saber como usarlas si no sabes...¡!
Dulces Lunas.¡!
|
|
« Última modificación: 15 Junio 2009, 04:28 am por ░▒▓BlackZeroҖ▓▒░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
Sumado a lo que te indican:
SetForegroundWindow 'pone la ventana en el primer plano y se activa GetForegroundWindow() 'Devuelve el manejador de la ventana activa GetWindowText 'Obtiene el título GetWindowRect 'Obtiene dimenciones IsIconic 'IsIconic retorna 0 si la ventana No está minimizada
S2
|
|
« Última modificación: 15 Junio 2009, 12:57 pm por Dessa »
|
En línea
|
Adrian Desanti
|
|
|
NsTeam
Desconectado
Mensajes: 127
|
el codigo que tengo es este
Private Sub Command1_Click() If Option1 = True Then AppActivate "Bloc de Notas" SendKeys "%(a)+(l)", True End If End Sub
Entonces en vez de Bloc de Notas
POngo que Codigo que me dijieron?
|
|
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
Option Explicit
Private Declare Function SetForegroundWindow Lib "USER32" (ByVal hwnd As Long) As Long Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
If Option1 = True Then Call SetForegroundWindow(FindWindow("notepad", vbNullString))
End Sub
S2
|
|
|
En línea
|
Adrian Desanti
|
|
|
byway
Desconectado
Mensajes: 181
^^,
|
IsIconic 'IsIconic retorna 0 si la ventana No está minimizada
Aprovechando el tema .. ahora que lo estoy leyendo me gustaria ponerle esa opcion de cuando este minimizado y se quiera abrir otra vez el mismo exe, se maximize el que esta abierto, algo asi como el messenger. pensaba hacerlo con FindWindow y lo demas, pero vi un ejemplo que no usa tanto de apis, usando el nombre del exe, pero si este cambia no sirve, y para ello pienso usar la funcion CreateMutex en lugar de un simple App.PrevInstance, a lo que iva eso de IsIconic me serviria para detectar si esta minimizado la ventana, o si hay alguna otra manera de hacer lo mismo, por cierto aun no reviso sobre el tema este .. recien lo vi aqui y me acorde . Saludos. Edit: ya encontre .. y si esa es para lo que quiero me tomo solo unos segundos con san Google.
|
|
« Última modificación: 15 Junio 2009, 18:30 pm por byway »
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
No entendí bien la pregunta pero si es para una aplicacion tuya podes usar la propiedad WindowState del formulario, y si es para una externa podes usar IsIconic Option Explicit Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Const SW_SHOWNORMAL = 1
Private Sub Command1_Click()
If FindWindow("notepad", vbNullString) = 0 Then MsgBox "Notepad cerrado" Shell "notepad", vbNormalFocus Else If IsIconic(FindWindow("notepad", vbNullString)) = 0 Then MsgBox "Notepad no esta minimizado" 'Call SetForegroundWindow(FindWindow("notepad", vbNullString)) Else MsgBox "Notepad minimizado" 'Call ShowWindow(FindWindow("notepad", vbNullString), SW_SHOWNORMAL) 'Call SetForegroundWindow(FindWindow("notepad", vbNullString)) End If End If
End Sub
S2
|
|
« Última modificación: 15 Junio 2009, 18:56 pm por Dessa »
|
En línea
|
Adrian Desanti
|
|
|
byway
Desconectado
Mensajes: 181
^^,
|
No entendí bien la pregunta pero si es para una aplicacion tuya podes usar la propiedad WindowState del formulario, y si es para una externa podes usar IsIconic
es la misma aplicacion pero para una nueva instancia, pero para que no se ejecute y en lugar de eso maximize la actual... algo asi como para que no se ejecute el mismo exe varias veces .. se suele usar el App.PrevInstance o algo mejor la funcion API CreateMutex por si le cambian el nombre al exe.
|
|
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
es la misma aplicacion pero para una nueva instancia, pero para que no se ejecute y en lugar de eso maximize la actual... algo asi como para que no se ejecute el mismo exe varias veces .. se suele usar el App.PrevInstance o algo mejor la funcion API CreateMutex por si le cambian el nombre al exe.
Ahora si, si buscas en el foro creo que hay un code alternativo de Karcrack. S2 EDIT: http://foro.elhacker.net/programacion_vb/srcmaltmutexbas_alternativa_a_createmutex-t243771.0.html;msg1171506;topicseenS2
|
|
« Última modificación: 16 Junio 2009, 12:01 pm por Dessa »
|
En línea
|
Adrian Desanti
|
|
|
|
|