Solved

Bring Window into focus

Posted on 2010-09-09
12
722 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
  • 6
  • 5
12 Comments
 
LVL 8

Expert Comment

by:ragnarok89
Comment Utility
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
Comment Utility
I am not using webbrowser1
0
 
LVL 6

Expert Comment

by:judgeking
Comment Utility
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
 
LVL 6

Expert Comment

by:judgeking
Comment Utility
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
Comment Utility
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
Comment Utility
maybe i am not doing it correclty.  I put the appactive sub into a command buton
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 6

Expert Comment

by:judgeking
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
yes  
i was using the google example
0
 

Author Comment

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

Accepted Solution

by:
judgeking earned 500 total points
Comment Utility
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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
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…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

772 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now