?
Solved

Bring Window into focus

Posted on 2010-09-09
12
Medium Priority
?
761 Views
Last Modified: 2013-12-26
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
Comment
Question by:rjef
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
12 Comments
 
LVL 8

Expert Comment

by:ragnarok89
ID: 33640546
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
 

Author Comment

by:rjef
ID: 33640643
I am not using webbrowser1
0
 
LVL 6

Expert Comment

by:judgeking
ID: 33655807
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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 6

Expert Comment

by:judgeking
ID: 33655811
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
 

Author Comment

by:rjef
ID: 33661872
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
 

Author Comment

by:rjef
ID: 33661904
maybe i am not doing it correclty.  I put the appactive sub into a command buton
0
 
LVL 6

Expert Comment

by:judgeking
ID: 33662518
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
 

Author Comment

by:rjef
ID: 33662846
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
 
LVL 6

Expert Comment

by:judgeking
ID: 33663159
You copied the code from my latest example?  If you're just maximizing an IE window, what's the name of the window?
0
 

Author Comment

by:rjef
ID: 33663477
yes  
i was using the google example
0
 

Author Comment

by:rjef
ID: 33663513
if i try to use your code directly i get the attached.
Presentation1.jpg
0
 
LVL 6

Accepted Solution

by:
judgeking earned 2000 total points
ID: 33663621
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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses
Course of the Month10 days, 10 hours left to enroll

764 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question