Ayuda con AppActivate

Iniciado por NsTeam, 15 Junio 2009, 04:10 AM

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

NsTeam

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 =)

BlackZeroX

#1
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.¡!
The Dark Shadow is my passion.

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Dessa

#3
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








Adrian Desanti

NsTeam

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?

Dessa



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


Adrian Desanti

byway

#6
Cita de: Dessa en 15 Junio 2009, 12:26 PM
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  ;D ;D ;D .

Saludos.

Edit: ya encontre .. y si esa es para lo que quiero me tomo solo unos segundos con san Google.

Dessa

#7
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

Adrian Desanti

byway

Cita de: Dessa en 15 Junio 2009, 18:45 PM
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.

Dessa

#9
Cita de: byway en 16 Junio 2009, 03:40 AM
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;topicseen

S2
Adrian Desanti