[AccessD] Office API's

Susan Harkins ssharkins at gmail.com
Fri Dec 10 08:04:55 CST 2010


I apologize to everyone and appreciate your patience. :) My editor brain 
went into high gear. One of my personal grammar issues is placing the 
modifier as close to the noun as possible, so when I started to write, API's 
for Office, the brain just kicked in and I wrote Office API's -- I 
apologize.

What I should have said was Windows API's for Office applications! ;)

Thank you Stuart!
Susan H.
----- Original Message ----- 
From: "Stuart McLachlan" <stuart at lexacorp.com.pg>
To: "Access Developers discussion and problem solving" 
<accessd at databaseadvisors.com>
Sent: Thursday, December 09, 2010 9:27 PM
Subject: Re: [AccessD] Office API's


> On 9 Dec 2010 at 20:10, Susan Harkins wrote:
>
>> Windows API functions.
>> Susan H.
>>
>> > Susan - did you mean to say "add-ins" ?
>> > I'm not sure what you are referring to....
>> >>
>> >> I'm writing about Office APIs -- if you have a favorite one
>> >> you'd like to see showcased, let me know.
>>
>
>
> Ah Windows APIs.   I use quite a few of them.    Here's a few API calls 
> and functions that I
> use in most systems that I build (I keep them along with a number of other 
> functions in a
> module of general functions that I just plug in to new apps by default, 
> Listing from the
> simplest to the most complex:
>
> 1  Sleep (suspend execute for a while a.k.a  Wait()
>
> Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
>
>
> 2.  Get User - Get the name of the current user for logging 
> purposes/access control
>
>    Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
>                 "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) 
> As Long
> Function GetUser()
>    Dim Response As Long
>    Dim uname As String * 32
>    Response = GetUserName(uname, 32)
>    GetUser = Left(uname, InStr(uname, Chr$(0)) - 1)
> End Function
>
>
> 3.  Temp Directory  (If you need to build and run a batch file or a set of 
> FTP commands etc)
>
> Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
>                        (ByVal nBufferLength As Long, ByVal lpBuffer As 
> String) As Long
> Public Function TempDir() As String
>    Dim strPath As String
>    strPath = Space(MAX_PATH)
>    GetTempPath Len(strPath), strPath
>    TempDir = Left(strPath, InStr(1, strPath, vbNullChar) - 1)
> End Function
>
>
> 4.   Desktop Directory ( so that I can drop files onto it or look for 
> files on it)
>
> Private Declare Function SHGetSpecialFolderLocation _
>                          Lib "shell32" (ByVal hwnd As Long, _
>                                         ByVal nFolder As Long, ppidl As 
> Long) As Long
> Private Declare Function SHGetPathFromIDList _
>                          Lib "shell32" Alias "SHGetPathFromIDListA" _
>                              (ByVal Pidl As Long, ByVal pszPath As String) 
> As Long
> Private Declare Sub CoTaskMemFree Lib "ole32" (ByVal pvoid As Long)
> Public Function Desktop() As String
>    Dim lngPidlFound As Long
>    Dim lngFolderFound As Long
>    Dim lngPidl As Long
>    Dim strPath As String
>    Const CSIDL_DESKTOPDIRECTORY = &H10
>    Const MAX_PATH = 260
>    Const NOERROR = 0
>
>    strPath = Space(MAX_PATH)
>    lngPidlFound = SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, 
> lngPidl)
>    If lngPidlFound = NOERROR Then
>        lngFolderFound = SHGetPathFromIDList(lngPidl, strPath)
>        If lngFolderFound Then
>            Desktop = Left$(strPath, _
>                            InStr(1, strPath, vbNullChar) - 1) & "\"
>        End If
>    End If
>    CoTaskMemFree lngPidl
> End Function
>
>
> 5.  GetOpenFileName - no need to embed a control on a form to get an 
> openfile dialog.
>
> Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
>         "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
>
> Type OPENFILENAME
>    lStructSize As Long
>    hwndOwner As Long
>    hInstance As Long
>    lpstrFilter As String
>    lpstrCustomFilter As String
>    nMaxCustFilter As Long
>    nFilterIndex As Long
>    lpstrFile As String
>    nMaxFile As Long
>    lpstrFileTitle As String
>    nMaxFileTitle As Long
>    lpstrInitialDir As String
>    lpstrTitle As String
>    flags As Long
>    nFileOffset As Integer
>    nFileExtension As Integer
>    lpstrDefExt As String
>    lCustData As Long
>    lpfnHook As Long
>    lpTemplateName As String
> End Type
>
> Function GetFileName(Directory As String) As String
>    Dim OpenFile As OPENFILENAME
>    Dim lReturn As Long
>    Dim sFilter As String
>    OpenFile.lStructSize = Len(OpenFile)
>    OpenFile.hwndOwner = 0
>    OpenFile.hInstance = 0
>    sFilter = "" & Chr(0)
>    OpenFile.lpstrFilter = sFilter
>    OpenFile.nFilterIndex = 0
>    OpenFile.lpstrFile = String(257, 0)
>    OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
>    OpenFile.lpstrFileTitle = OpenFile.lpstrFile
>    OpenFile.nMaxFileTitle = OpenFile.nMaxFile
>    OpenFile.lpstrInitialDir = Directory
>    OpenFile.lpstrTitle = "Select File"
>    OpenFile.flags = 0
>    lReturn = GetOpenFileName(OpenFile)
>    GetFileName = Left$(OpenFile.lpstrFile, InStr(OpenFile.lpstrFile, 
> Chr$(0)) - 1)
> End Function
>
>
>
> 6. ShellWait - Shell out to an application and wait for it to finish 
> before continuing
> (synchronous shell)
>
>    Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As 
> Long, _
>                                  ByVal dwMilliseconds As Long) As Long
>    Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName 
> As Long, _
>                  ByVal lpCommandLine As String, ByVal lpProcessAttributes 
> As Long, _
>                  ByVal lpThreadAttributes As Long, ByVal bInheritHandles 
> As Long, _
>                  ByVal dwCreationFlags As Long, ByVal lpEnvironment As 
> Long, _
>                  ByVal lpCurrentDirectory As Long, lpStartupInfo As 
> STARTUPINFO, _
>                  lpProcessInformation As PROCESS_INFORMATION) As Long
>    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As 
> Long
>
> Private Const STARTF_USESHOWWINDOW& = &H1
> Private Const NORMAL_PRIORITY_CLASS = &H20&
> Private Const INFINITE = -1&
>
> Private Type STARTUPINFO
>    cb As Long
>    lpReserved As String
>    lpDesktop As String
>    lpTitle As String
>    dwX As Long
>    dwY As Long
>    dwXSize As Long
>    dwYSize As Long
>    dwXCountChars As Long
>    dwYCountChars As Long
>    dwFillAttribute As Long
>    dwFlags As Long
>    wShowWindow As Integer
>    cbReserved2 As Integer
>    lpReserved2 As Long
>    hStdInput As Long
>    hStdOutput As Long
>    hStdError As Long
> End Type
>
> Private Type PROCESS_INFORMATION
>    hProcess As Long
>    hThread As Long
>    dwProcessID As Long
>    dwThreadID As Long
> End Type
>
> Public Sub ShellWait(Pathname As String, Optional WindowStyle As Long)
>    On Error GoTo Err_Handler
>
>    Dim proc As PROCESS_INFORMATION
>    Dim start As STARTUPINFO
>    Dim ret As Long
>
>    ' Initialize the STARTUPINFO structure:
>    With start
>        .cb = Len(start)
>        If Not IsMissing(WindowStyle) Then
>            .dwFlags = STARTF_USESHOWWINDOW
>            .wShowWindow = WindowStyle
>        End If
>    End With
>    ' Start the shelled application:
>    ret& = CreateProcessA(0&, Pathname, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 
> 0&, 0&,
> start, proc)
>    ' Wait for the shelled application to finish:
>    ret& = WaitForSingleObject(proc.hProcess, INFINITE)
>    ret& = CloseHandle(proc.hProcess)
>
> Exit_Here:
>    Exit Sub
> Err_Handler:
>    MsgBox Err.Description, vbExclamation, "E R R O R"
>    Resume Exit_Here
>
> End Sub
>
>
>
> -- 
> Stuart
>
>
> -- 
> 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