Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: NsTeam en 15 Junio 2009, 04:10 am



Título: Ayuda con AppActivate
Publicado por: NsTeam en 15 Junio 2009, 04:10 am
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 =)


Título: Re: Ayuda con AppActivate
Publicado por: BlackZeroX en 15 Junio 2009, 04:15 am
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.¡!


Título: Re: Ayuda con AppActivate
Publicado por: seba123neo en 15 Junio 2009, 04:33 am
GetActiveWindow()


Título: Re: Ayuda con AppActivate
Publicado por: Dessa en 15 Junio 2009, 12:26 pm
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










Título: Re: Ayuda con AppActivate
Publicado por: NsTeam en 15 Junio 2009, 14:45 pm
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?


Título: Re: Ayuda con AppActivate
Publicado por: Dessa en 15 Junio 2009, 15:16 pm
Código:

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




Título: Re: Ayuda con AppActivate
Publicado por: byway en 15 Junio 2009, 18:22 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.


Título: Re: Ayuda con AppActivate
Publicado por: 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


Código:
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

 


Título: Re: Ayuda con AppActivate
Publicado por: byway en 16 Junio 2009, 03:40 am
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.


Título: Re: Ayuda con AppActivate
Publicado por: Dessa en 16 Junio 2009, 11:50 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 (http://foro.elhacker.net/programacion_vb/srcmaltmutexbas_alternativa_a_createmutex-t243771.0.html;msg1171506;topicseen)

S2


Título: Re: Ayuda con AppActivate
Publicado por: byway en 16 Junio 2009, 22:16 pm

Ahora si, si buscas en el foro creo que hay un code alternativo de Karcrack.


si ya estoy usando el CreateMutex, también vi el modulo de  Karcrack, pero lo que deseaba adicionarle es que cuando ya este en ejecución (la primera instancia) y cuando vuelves a ejecutar para la segunda instancia este vea si la primera instancia esta minimizada para asi maximizarlo y ponerlo en frente obteniendo el foco, y luego se cierre para evitar 2 instancias del mismo exe.



Título: Re: Ayuda con AppActivate
Publicado por: abkanis en 23 Abril 2014, 16:29 pm
Código:
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Dim x As String

Private Sub Timer1_Timer()
If IsIconic(Me.hwnd) = 0 Then
If x = "" Then MsgBox "maximizado"
x = "x"
Else
If x = "x" Then MsgBox "minimizado"
x = ""
End If
End Sub