タイトル | : Re: WebBrowser Control 上で Click イベントを取得したい。 |
記事No | : 13597 |
投稿日 | : 2009/04/15(Wed) 23:01 |
投稿者 | : 魔界の仮面弁士 |
> WebBrowser Control の Click イベント(あるいは MouseDown イベント)を
ポップアップなら、タイミングとしては MouseUp では無いでしょうか。
> 取得する方法が分からず困っています。
PDF の表示を担当しているのは WebBrowser ではなく、PDF のビューワソフトであり、 WebBrowser の機能としては用意されていません。 まずはビューワ―ソフトの側に、該当機能が無いかどうか探してみてください。
ビューワー側に取得機能が無い場合、代替案として、DirectInput を使うということも できます。参照設定から [DirectX 8 for Visual Basic Type Library]を選択して、 以下のコードを試してみてください。
Option Explicit Implements DirectXEvent8 Private DX As DirectX8 Private DI As DirectInput8 Private Mouse As DirectInputDevice8 Private mhEventM As Long
Private Sub RightButtonUp() Debug.Print "ポップアップ" PopupMenu Me.mnuPopup End Sub
Private Sub RightButtonDown() End Sub
Private Sub Form_Activate() Mouse.Acquire End Sub
Private Sub Form_Load() Me.WebBrowser1.Navigate2 "C:\001.PDF"
Set DX = New DirectX8 Set DI = DX.DirectInputCreate() Set Mouse = DI.CreateDevice("GUID_SysMouse") Mouse.SetCommonDataFormat DIFORMAT_MOUSE2 Mouse.SetCooperativeLevel Me.hWnd, DISCL_NONEXCLUSIVE Or DISCL_FOREGROUND Dim diprop As DxVBLibA.DIPROPLONG diprop.lHow = DIPH_DEVICE diprop.lObj = 0 diprop.lData = 8 Mouse.SetProperty "DIPROP_BUFFERSIZE", diprop
mhEventM = DX.CreateEvent(Me) Mouse.SetEventNotification mhEventM End Sub
Private Sub DirectXEvent8_DXCallback(ByVal eventid As Long) If eventid <> mhEventM Then Exit Sub End If On Error Resume Next Dim devdata(7) As DIDEVICEOBJECTDATA Dim datacnt As Long datacnt = Mouse.GetDeviceData(devdata, DIGDD_DEFAULT) If Err.Number <> 0 Then datacnt = 0 Mouse.Acquire End If On Error GoTo 0
Dim i As Long For i = 0 To datacnt - 1 If devdata(i).lOfs = DIMOFS_BUTTON1 Then Select Case devdata(i).lData Case 0 RightButtonUp Case 128 RightButtonDown End Select End If Next End Sub
Private Sub Form_QueryUnload(Cancel%, UnloadMode%) Mouse.Unacquire DX.DestroyEvent mhEventM mhEventM = 0 End Sub
Private Sub Form_Unload(Cancel As Integer) Set Mouse = Nothing Set DI = Nothing Set DX = Nothing End Sub
|