tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルWebBrowser Control 上で Click イベントを取得したい。
記事No13596
投稿日: 2009/04/15(Wed) 20:57
投稿者しろき
WebBrowser Control を使用して PDF ファイルを表示させ、マウス右クリックでポップアップメニューを表示させたいのですが、WebBrowser Control の Click イベント(あるいは MouseDown イベント)を取得する方法が分からず困っています。
初心者質問でお恥ずかしいですが、どなたかご教示ください。お願いいたします。
なお環境は Win2000,VB6+SP6 です。

[ツリー表示へ]
タイトルRe: WebBrowser Control 上で Click イベントを取得したい。
記事No13597
投稿日: 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

[ツリー表示へ]
タイトルRe^2: WebBrowser Control 上で Click イベントを取得したい。
記事No13598
投稿日: 2009/04/15(Wed) 23:34
投稿者しろき
魔界の仮面弁士さん

早速のご教示有難うございました。
ビューワーソフトの機能については良く分からなかったため、教えて頂いたコードを試してみたところ、希望どおりの動作を得ることができました。どうも有難うございました。

コードの意味については全く理解できないのですが、時間をかけて解析し、今後の参考にさせて頂きたいと思います。

本当に有難うございました。

[ツリー表示へ]
タイトルRe^3: WebBrowser Control 上で Click イベントを取得したい。
記事No13599
投稿日: 2009/04/16(Thu) 13:22
投稿者魔界の仮面弁士
> コードの意味については全く理解できないのですが、

下記のサイトが参考になるかと思います。
http://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse2.html

[ツリー表示へ]
タイトルRe^4: WebBrowser Control 上で Click イベントを取得したい。
記事No13603
投稿日: 2009/04/16(Thu) 21:27
投稿者しろき
魔界の仮面弁士さん

情報有難うございます。
じっくり勉強してみたいと思います。

[ツリー表示へ]