tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: WebBrowser Control 上で Click イベントを取得したい。
投稿日: 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。