VBAでJAVAをコントロール http://okwave.jp/qa/q7696164.html
・(FindWindowの第二引数で指定する)MsgBoxのウィンドウタイトルは、OSやIEによって違うので適宜修正。 ・Office2010以前は、LongPtrはLongに変更。 (PtrSafe属性も外してください) ・URLも適宜変更。
・MsgBoxが非アクティブ時にイベントが発生してるのでGetLastActivePopupは使えません。
VBAでJAVAをコントロール http://okwave.jp/qa/q7696164.html
・(FindWindowの第二引数で指定する)MsgBoxのウィンドウタイトルは、OSやIEによって違うので適宜修正。 ・Office2010以前は、LongPtrはLongに変更。 (PtrSafe属性も外してください) ・URLも適宜変更。
・MsgBoxが非アクティブ時にイベントが発生してるのでGetLastActivePopupは使えません。
| 'YU-TAMG氏のコード改 | |
| 'https://gist.github.com/1619670 | |
| ' 要・Microsoft Internet Controls 参照設定 | |
| Option Explicit | |
| Private 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 | |
| Private Declare PtrSafe Function GetLastActivePopup Lib "user32" (ByVal hwndOwnder As LongPtr) As LongPtr | |
| Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr | |
| Private Const WM_COMMAND As Long = &H111& | |
| Private WithEvents ie As InternetExplorer | |
| Private mDocumentComplete As Boolean | |
| Private m_CommandStateChange As Boolean | |
| Private Sub Class_Initialize() | |
| Set ie = New InternetExplorer | |
| ie.Visible = True | |
| Navigate "about:blank" | |
| End Sub | |
| Public Sub Navigate(ByRef URL As String) | |
| mDocumentComplete = False | |
| ie.Navigate2 URL | |
| Do | |
| DoEvents | |
| Loop Until mDocumentComplete | |
| End Sub | |
| Public Property Get IeObject() As InternetExplorer | |
| Set IeObject = ie | |
| End Property | |
| Private Sub ie_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean) | |
| Dim hwnd As LongPtr | |
| hwnd = FindWindow("#32770", "Web ページからのメッセージ") | |
| ' hwnd = GetLastActivePopup(ie.hwnd) | |
| If hwnd <> 0 Then | |
| Debug.Print hwnd, ie.hwnd | |
| PostMessage hwnd, WM_COMMAND, vbOK, 0 | |
| m_CommandStateChange = True | |
| End If | |
| End Sub | |
| Private Sub ie_DocumentComplete(ByVal pDisp As Object, URL As Variant) | |
| mDocumentComplete = True | |
| End Sub | |
| Public Sub CommandStateChange() | |
| m_CommandStateChange = False | |
| Do | |
| DoEvents | |
| Loop Until m_CommandStateChange | |
| End Sub |
| Option Explicit | |
| Public Sub TestIE_Automation() | |
| Const URL As String = "http://www.tagindex.com/javascript/window/confirm.html" | |
| Dim ie As CIE | |
| Debug.Print "Start", Now | |
| Set ie = New CIE | |
| ie.Navigate URL | |
| 'ボタンクリックコード追加 | |
| ie.CommandStateChange | |
| Debug.Print "Exit", Now | |
| End Sub |