Autor Tema: Abrir ventana con ShellExecute pero a un mismo tamaño y posicion  (Leído 1511 veces)

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

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Una consulta amigos.

Fijense, con este código abro una web:
Código: (VB) [Seleccionar]
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Const SW_NORMAL = 1

Private Sub btnCommand1_Click()
Dim X
X = ShellExecute(Me.hWnd, "Open", "https://player.vimeo.com/video/97494784?portrait=0&color=999", &O0, &O0, SW_NORMAL)
End Sub


Y todo bien, pero la ventana se abre "recordando" el tamaño y posición de la ultima vez que se abrió. ¿sera posible abrirlo en un tamaño y posición especificado por mi? así sea que el usuario halla abierto esa ventana y modificado su tamaño quiero que al volverle a dar clic se abra en el tamaño y posición que le indique desde el exe.

Muchas gracias
Me encuentras en YAcosta.com

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Abrir ventana con ShellExecute pero a un mismo tamaño y posicion
« Respuesta #1 en: Mayo 01, 2016, 07:12:43 pm »
Aca tenes como abrir algo y obtener el hWnd de dicha ventana.
http://www.vb-helper.com/howto_pid_to_hwnd.html

Con ese handle de la ventana simplemente llama a SetWindowPos y posicionala donde quieras con el tamaño que quieras.

ejemplo: SetWindowPos (donde dice Fenster neu positionieren:)

saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Abrir ventana con ShellExecute pero a un mismo tamaño y posicion
« Respuesta #2 en: Mayo 02, 2016, 12:11:06 am »
Gracias Coco, voy a checarlo
Me encuentras en YAcosta.com

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +150/-8
    • Ver Perfil
Re:Abrir ventana con ShellExecute pero a un mismo tamaño y posicion
« Respuesta #3 en: Mayo 02, 2016, 04:49:58 am »
hola es medio garrón esto de los navegadores ya que trabajan de una forma diferente al parecer es como que un exe llama a otro exe y entonces el pid se pierde por el camino, esto pasa cuando ya hay una instancia de la aplicación corriendo, asi que puede que lo mas fácil sea esperar a que cambie la ventana activa y tomar su hwnd y listo.

Citar
Option Explicit
Private Declare Sub SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Sub CommandButton1_Click()
    ShellBrowserUrl "https://player.vimeo.com/video/97494784?portrait=0&color=999", 10, 10, 400, 400
End Sub


Private Function ShellBrowserUrl(ByVal sUrl As String, Left As Long, Top As Long, Width As Long, Height As Long)
    Dim oShell As Object
    Dim sDefaulBrowserPath As String
    Dim hWnd As Long

    Set oShell = CreateObject("WScript.shell")
    sDefaulBrowserPath = Split(oShell.RegRead("HKEY_CLASSES_ROOT\HTTP\shell\open\command\"), Chr(34))(1)
    hWnd = GetForegroundWindow
    Call Shell(sDefaulBrowserPath & " " & sUrl, vbNormalFocus)
   
    Do While hWnd = GetForegroundWindow
        DoEvents
    Loop
   
    SetWindowPos GetForegroundWindow, 0, Left, Top, Width, Height, 0
       
   
End Function

pd: esto también se puede hacer con ShellExecute  use el clásico shell porque estaba probando lo que sugirió coco.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Abrir ventana con ShellExecute pero a un mismo tamaño y posicion
« Respuesta #4 en: Mayo 02, 2016, 01:53:44 pm »
Genial, muchas gracias Lea.


EDITO: Muchas gracias Lea, me fui por tu camino y la solución funciona ferpectamente, muchas gracias.
« última modificación: Mayo 02, 2016, 01:58:09 pm por YAcosta »
Me encuentras en YAcosta.com