Option Compare Database Option Explicit Const WM_CHAR = &H102 Const BM_CLICK = &HF5 Const SW_HIDE = 0 'FindWindow 'http://msdn.microsoft.com/ja-jp/library/cc364634.aspx Declare PtrSafe Function FindWindow Lib "user32" _ Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String _ ) As LongPtr 'FindWindowEx 'http://msdn.microsoft.com/ja-jp/library/cc410853.aspx Declare PtrSafe Function FindWindowEx Lib "user32" _ Alias "FindWindowExA" ( _ ByVal hWnd1 As LongPtr, _ ByVal hWnd2 As LongPtr, _ ByVal lpsz1 As String, _ ByVal lpsz2 As String _ ) As LongPtr 'PostMessage 'http://msdn.microsoft.com/ja-jp/library/cc410952.aspx Declare PtrSafe Function PostMessage Lib "user32" _ Alias "PostMessageA" ( _ ByVal hwnd As LongPtr, _ ByVal wMsg As Long, _ ByVal wParam As LongPtr, _ ByVal lParam As LongPtr _ ) As Long Declare PtrSafe Function ShowWindow Lib "user32" _ (ByVal hwnd As LongPtr, _ ByVal nCmdShow As Long _ ) As Long Sub OpenaccdrWithPassword() Dim pHwnd As LongPtr, cHwnd As LongPtr, btnHwnd As LongPtr Dim targetDBName As String Dim targetDBFullName As String Dim dialogName As String dialogName = "データベース パスワードの入力" targetDBName = "targetAppName" targetDBFullName = Application.CurrentProject.Path & "\target.accdr" pHwnd = FindWindow(vbNullString, targetDBName) If pHwnd <> 0 Then Exit Sub pHwnd = FindWindow(vbNullString, dialogName) If pHwnd <> 0 Then Exit Sub Shell "msaccess.exe /runtime" & targetDBFullName, vbNormalFocus Do 'カウンタつけて何かの時に対処せねばね pHwnd = FindWindow(vbNullString, dialogName) Debug.Print pHwnd If pHwnd <> 0 Then Exit Do Loop ShowWindow pHwnd, SW_HIDE Do cHwnd = FindWindowEx(pHwnd, 0, "RichEdit20W", vbNullString) Debug.Print cHwnd If cHwnd <> 0 Then Exit Do Loop Do btnHwnd = FindWindowEx(pHwnd, 0, "button", "OK") Debug.Print btnHwnd If btnHwnd <> 0 Then Exit Do Loop PostMessage cHwnd, WM_CHAR, Asc("p"), 0 PostMessage cHwnd, WM_CHAR, Asc("@"), 0 PostMessage cHwnd, WM_CHAR, Asc("s"), 0 PostMessage cHwnd, WM_CHAR, Asc("S"), 0 PostMessage btnHwnd, BM_CLICK, 0, 0 Application.Quit End Sub
2010/11/17
office2010 Win32API FindWindow/FindWindowEx/PostMessage
ラベル:
access 2010,
API,
Office 2010,
VBA
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿