Indentifying when my application gets focus

Posted on 2006-06-06
Last Modified: 2010-04-07
Hello Experts,

     I need a way to determine when my application has recieved focus, either through clicking on the application in the taskbar or by clicking on the form window.  The form_GotFocus and _LoseFocus do not achieve this goal, since form_GotFocus only fires when all of the other applicable controls are disabled.  Is there a way, via API or not, to be able to do this?  I need to be able to open a file and input the contents when the application gets focus and in the interest of efficiency for the end-user, I would prefer them not to have to make an additional click.

Any and all help is greatly appreciated, this is a last-minute design change for a deadline project.

Question by:gwosgood
    LVL 85

    Expert Comment

    by:Mike Tomlinson
    You need to subclass and then trap the WM_ACTIVATE msg as in this PAQ:
    LVL 13

    Accepted Solution

    Hi gwosgood
    The following code demonstrates a simple and affective way of gaining your goal without complicated subclassing. Add a timer and a command buton to a form, st the timer interval to 100 and paste the following code:

    Private Declare Function GetForegroundWindow Lib "user32" () As Long
    Dim PrevActive As Boolean

    Private Sub Form_GotFocus()
        MsgBox "Activated"
    End Sub

    Private Sub Timer1_Timer()
    Dim WinHandle As Long

    WinHandle = GetForegroundWindow

    If Me.hWnd = WinHandle Then
        If PrevActive = False Then
            PrevActive = True
        End If
        PrevActive = False
    End If
    End Sub
    LVL 2

    Author Comment

    Thank you very much iHadi, a very simple solution, just the thing I was looking for.

    One quick question though, what was the purpose of the command button?
    LVL 13

    Expert Comment

    You got me! I was writing another post that used a command button and it looks like you got a copy of my thoughts too. In this solution you do not need it only if you like clicking on empty coded buttons!

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    What Is Threat Intelligence?

    Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

    There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and forth, and/or are slow. Here is an easy way in VB6 using ADO to remove duplicate row…
    If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
    As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
    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…

    759 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

    11 Experts available now in Live!

    Get 1:1 Help Now