

Private Declare Function SetKeyboardState _ Lib "user32" _ (lppbKeyState As Any) _ As Long Private Declare Function GetKeyboardState _ Lib "user32" (pbKeyState As Any) _ As Long
Private Declare Function GetWindowThreadProcessId _ Lib "user32" _ (ByVal hWnd As Long, _ lpdwProcessId As Long) _ As Long
Private Declare Function AttachThreadInput _ Lib "user32" _ (ByVal idAttach As Long, _ ByVal idAttachTo As Long, _ ByVal fAttach As Long) _ As Long
Private Declare Function SetForegroundWindow _ Lib "user32" _ (ByVal hWnd As Long) _ As Long
Private Declare Function SetFocusAPI _ Lib "user32" Alias "SetFocus" _ (ByVal hWnd As Long) _ As Long
Private Const VK_SHIFT = &H10Private Const VK_LSHIFT = &HA0Private Const VK_RSHIFT = &HA1
Function fGetRefNoAutoexec( _ ByVal strMDBPath As String) _ As access.ApplicationOn Error GoTo ErrHandlerDim objAcc As access.ApplicationDim TIdSrc As Long, TIdDest As LongDim abytCodesSrc(0 To 255) As ByteDim abytCodesDest(0 To 255) As Byte
If (Len(Dir$(strMDBPath, vbNormal)) = 0) Then Err.Raise 53 End If
Set objAcc = New access.Application With objAcc .Visible = True
' attach to process TIdSrc = GetWindowThreadProcessId( _ Application.hWndaccessApp, ByVal 0) TIdDest = GetWindowThreadProcessId( _ .hWndaccessApp, ByVal 0) If CBool(AttachThreadInput(TIdSrc, TIdDest, True)) Then Call SetForegroundWindow(.hWndaccessApp) Call SetFocusAPI(.hWndaccessApp) ' 设置Shift状态 Call GetKeyboardState(abytCodesSrc(0)) Call GetKeyboardState(abytCodesDest(0)) abytCodesDest(VK_SHIFT) = 128 Call SetKeyboardState(abytCodesDest(0)) ' 打开一个带有Autoexec宏的mdb Call .OpenCurrentDatabase(strMDBPath, False) ' 恢复键盘状态 Call SetKeyboardState(abytCodesSrc(0)) End If ' release Call AttachThreadInput(TIdSrc, TIdDest, False) Call SetForegroundWindow(Application.hWndaccessApp) Call SetFocusAPI(Application.hWndaccessApp) End With Set fGetRefNoAutoexec = objAcc Set objAcc = Nothing
Exit FunctionErrHandler: If (TIdDest) Then Call AttachThreadInput(TIdSrc, TIdDest, False) Call SetForegroundWindow(Application.hWndaccessApp) With Err .Raise .Number, .Source, .Description, .HelpFile, .HelpContext End WithEnd Function'********* Code End ***********
翻译: 朱亦文来 源 于:MVPS: The access Web