[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 783
  • Last Modified:

Bring Window into focus

I need the code in vb6 to bring a webpage in IE out of the tray and into focus and active and maximize and on top.
0
rjef
Asked:
rjef
  • 6
  • 5
1 Solution
 
ragnarok89Commented:
place this in a module :

Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByVal hwnd As Long) As Long


place this in the event :

BringWindowToTop(WebBrowser1.Handle)

0
 
rjefAuthor Commented:
I am not using webbrowser1
0
 
judgekingCommented:
I think this will do what you want:
Public Sub ActivateApp(Title As String, Optional Maximize As Boolean = False)
  Dim lHWnd As Long
  
  AppActivate Title, False 'ie: "Google"

  If Err.Number = 0 Then
    lHWnd = GetForegroundWindow
    
    If lHWnd <> 0 Then
      If Maximize Then
        SendMessage lHWnd, WmSysCommand, ScMaximize, 0
        Call ShowWindow(lHWnd, SwShowMaximized)
      Else
        SendMessage lHWnd, WmSysCommand, ScRestore, 0
        Call ShowWindow(lHWnd, SwRestore)
      End If
      
      BringWindowToTop lHWnd
    End If
  End If
End Sub

Open in new window

0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
judgekingCommented:
Sorry, you'll need these declarations too:
Public Const SwShowMinNoActive = 7
Public Const SwShowNA = 8
Public Const SwRestore = 9
Public Const SwShowDefault = 10

Public Const ScSize = &HF000&
Public Const ScSeparator = &HF00F&
Public Const ScMove = &HF010&
Public Const ScMinimize = &HF020&
Public Const ScMaximize = &HF030&
Public Const ScClose = &HF060&
Public Const ScRestore = &HF120&
Public Const ScScreensave = &HF140&

Public Const WmSysCommand = &H112&

Public Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Open in new window

0
 
rjefAuthor Commented:
it doesn't work everytime.  Sometimes i have to call it 2 or 3 times to bring it back into focus after i have minimized it.  Also it doesn't maximize it at all.
0
 
rjefAuthor Commented:
maybe i am not doing it correclty.  I put the appactive sub into a command buton
0
 
judgekingCommented:
Looks like the whole Declare section didn't paste properly above, you're probably getting an error on SwShowMaximized not being defined.  Here's the whole thing again:

My form code is just:

Option Explicit

Private Sub Command1_Click()
  ActivateApp "Google", True
End Sub

Option Explicit

Public Const HwndTopmost = -1
Public Const HwndNoTopmost = -2
Public Const SwpNoMove = &H1
Public Const SwpNoSize = &H2
Public Const SwpNoActivate = &H10
Public Const SwpShowWindow = &H40

Public Const SwHide = 0
Public Const SwNormal = 1
Public Const SwShowMinimized = 2
Public Const SwShowMaximized = 3
Public Const SwShowNoActivate = 4
Public Const SwShow = 5
Public Const SwMinimize = 6
Public Const SwShowMinNoActive = 7
Public Const SwShowNA = 8
Public Const SwRestore = 9
Public Const SwShowDefault = 10

Public Const ScSize = &HF000&
Public Const ScSeparator = &HF00F&
Public Const ScMove = &HF010&
Public Const ScMinimize = &HF020&
Public Const ScMaximize = &HF030&
Public Const ScClose = &HF060&
Public Const ScRestore = &HF120&
Public Const ScScreensave = &HF140&

Public Const WmSysCommand = &H112&

Public Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Public Sub ActivateApp(Title As String, Optional Maximize As Boolean = False)
  Dim lHWnd As Long
  
  AppActivate Title, False 'ie: "Google"

  If Err.Number = 0 Then
    lHWnd = GetForegroundWindow
    
    If lHWnd <> 0 Then
      If Maximize Then
        SendMessage lHWnd, WmSysCommand, ScMaximize, 0
        Call ShowWindow(lHWnd, SwShowMaximized)
      Else
        SendMessage lHWnd, WmSysCommand, ScRestore, 0
        Call ShowWindow(lHWnd, SwRestore)
      End If
      
      BringWindowToTop lHWnd
    End If
  End If
End Sub

Open in new window

0
 
rjefAuthor Commented:
i had to put all your public const and public declares into a module.  It maximizes now put doesn't always bring it into focus on the first click.  I have to sometimes click several times.
0
 
judgekingCommented:
You copied the code from my latest example?  If you're just maximizing an IE window, what's the name of the window?
0
 
rjefAuthor Commented:
yes  
i was using the google example
0
 
rjefAuthor Commented:
if i try to use your code directly i get the attached.
Presentation1.jpg
0
 
judgekingCommented:
Yeah, the main code needs to be in a module and just the Command1_Click is in the form.  But it works for me every time.  Maybe you could minimize your VB window, just to be safe:

Private Sub Command1_Click()
  Me.WindowState = vbMinimized
  ActivateApp "Google", True
End Sub
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 6
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now