[AccessD] Getting Access Back On Top

Rocky Smolin rockysmolin at bchacc.com
Wed Sep 8 15:07:18 CDT 2010


Lambert:

The title of this app in the Application Title box of the Startup dialog box
is 'DocketWorks (R) Version 3.379 rev 100906'.

I put a MsgBox into the code to see what  the various Task Names were as
they were found by the function but none of them resembled the app title.

What am I doing wrong?

Regards,

Rocky


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Heenan, Lambert
Sent: Wednesday, September 08, 2010 12:42 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Getting Access Back On Top

You want to get Access back on top, so sAppName (poor choice of variable
name I admit) is all or part of the text in the Access window title bar. 

Lambert

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin
Sent: Wednesday, September 08, 2010 2:29 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Getting Access Back On Top

Lambert:

Thanks but I can't get it to work.   Calling ActivateWindowWithTitle what
should I pass to it in sAppName?

Meanwhile I modified the delete code to:

    For Each olContactItem In olContacts
        olContactItem.Delete
        DoEvents
    Next

And each time I call it, it deletes about 1/2 the contacts.  Very strange.
Anyone know why it should do that?

MTIA

Rocky

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Heenan, Lambert
Sent: Wednesday, September 08, 2010 10:38 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Getting Access Back On Top

A few API calls can do that...


Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _ ByVal
wCmd As Long) As Long

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String, ByVal CCh As Long) As Long

Private Declare Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Private Declare Function IsWindowVisible Lib "user32" _ (ByVal hwnd As Long)
As Long



'GetWindow() constants
    Private Const GW_HWNDFIRST = 0
    Private Const GW_HWNDLAST = 1
    Private Const GW_HWNDNEXT = 2
    Private Const GW_HWNDPREV = 3
    Private Const GW_OWNER = 4
    Private Const GW_CHILD = 5
    Private Const GWL_HWNDPARENT = (-8)

    Private Const GWW_HWNDPARENT = (-8)

Private Function FindAppWindow(sAppTitle As String, hWndStart As Long) As
Long
    'Finds a Window handle by its (partial) Title.
    'Only top level windows that have WS_VISIBLE style are
    'searched.
    ''''''''''''''''''''''''''''''''''''''''''''''''
    'sAppTitle - string that is contained in the Window title.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'On success returns the hWnd of the window that contains the
    'sAppTitle string and copies the Complete Title into sAppTitle;
    'Otherwise returns 0.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    Dim CurrWnd As Long
    Dim Length As Long
    Dim TaskName As String
    Dim lPos As Long

    CurrWnd = GetWindow(hWndStart, GW_HWNDFIRST)

    While CurrWnd <> 0
        If CurrWnd <> hWndStart And (0 <> IsWindowVisible(CurrWnd)) And (0 =
GetWindow(CurrWnd, GW_OWNER)) Then
            'Find the length of the Title
            Length = GetWindowTextLength(CurrWnd)

            'Does the Window have any title
            If Length > 0 Then
                'Allocate enough memory for the text
                TaskName = Space$(Length + 1)
                'Get the title text of the window
                Length = GetWindowText(CurrWnd, TaskName, Length + 1)
                'Get the Window's title
                TaskName = Left(TaskName, Len(TaskName) - 1)

                'Check if it is the window we are looking for
                If InStr(1, TaskName, sAppTitle) > 0 Then
                    'We found it
                    FindAppWindow = CurrWnd
                    sAppTitle = TaskName
                    Exit Function
                End If
           End If
        End If
        'Get next window handle
        CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
        DoEvents
    Wend
End Function


Sub ActivateWindowWithTitle(sAppName As String) Dim hwnd As Long


    hwnd = FindAppWindow(sAppName, Application.hWndAccessApp)

    If hwnd <> 0 Then
        'Program is running
        'Send the keys

        'Activate the App
        AppActivate sAppName

        'Send Kyes

    End If

End Sub
    


HTH

Lambert 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin
Sent: Wednesday, September 08, 2010 12:36 PM
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Getting Access Back On Top

Dear List:

I have written a routine for a client to transfer their contact information
from their database to a folder in Outlook.  The first I do is pop up the
folder selector so that they can select the contact folder that they want to
transfer their contacts into.  However, when the folder selector dialog box
pops up, Outlook is has the focus.  After they select the folder, Outlook is
still on top and they have to alt-Tab to get back to Access.  Is there a way
in Access to get the access app back on top?

Second problem is that I delete all of the contacts in the target folder
before the transfer using: 

    ' delete all the current contacts
    For Each olContactItem In olFolder.Items
        olContactItem.Delete
    Next

where: 

Dim olContactItem As outlook.ContactItem Dim olFolder As outlook.MAPIFolder


The loop takes a while to run but after it's done the contacts are still in
the folder.  Can anyone see what I'm doing wrong here?

MMTIA,

 

Rocky Smolin

Beach Access Software

858-259-4334

Skype: rocky.smolin

www.e-z-mrp.com <http://www.e-z-mrp.com/> 

www.bchacc.com <http://www.bchacc.com/> 

 

 


--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list