Heenan, Lambert
Lambert.Heenan at chartisinsurance.com
Wed Sep 8 14:42:04 CDT 2010
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