VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   4275
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4020
   LinkTopic       =   "Form1"
   ScaleHeight     =   4275
   ScaleWidth      =   4020
   StartUpPosition =   3  'Windows の既定値
   Begin VB.CommandButton Command1 
      Caption         =   "Command1"
      Height          =   435
      Left            =   780
      TabIndex        =   1
      Top             =   3660
      Width           =   2295
   End
   Begin VB.PictureBox Picture1 
      Height          =   3075
      Left            =   270
      ScaleHeight     =   3015
      ScaleWidth      =   3405
      TabIndex        =   0
      Top             =   150
      Width           =   3465
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Type BITMAPINFO 'BITMAPINFOHEADER（本当のBITMAPINFOではない）
    data(1064) As Byte
End Type

Private Declare Function SetDIBits Lib "gdi32" (ByVal hdc As Long, _
                                               ByVal hBitmap As Long, _
                                               ByVal nStartScan As Long, _
                                               ByVal nNumScans As Long, _
                                               lpBits As Any, _
                                               lpBI As BITMAPINFO, _
                                               ByVal wUsage As Long) As Long
                                               
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, _
                                                  Source As Any, _
                                                  ByVal Length As Long)

' CAOエンジン
Private caoEng As CaoEngine
' CAOワークスペース
Private caoWS As CaoWorkspace
' WebViewカメラのCAOコントローラ
Private WebViewCtrl As CaoController
' WebViewカメラの画像データ
Private WebViewPicture As CaoVariable

Private Sub Form_Load()
    'CAOエンジンとCAOワークスペースの作成
    Set caoEng = New CaoEngine
    Set caoWS = caoEng.Workspaces.Item(0)
    ' WebViewカメラのCAOコントローラ
    Set WebViewCtrl = caoWS.AddController("Livescope", "CaoProv.Canon.WebView", "", "Server=192.168.0.1")
    '変数オブジェクトを取得
    Set WebViewPicture = WebViewCtrl.AddVariable("Image")
End Sub

Private Sub Command1_Click()

    Dim i As Long
    Dim BMP() As Byte

    ' 画面更新
    BMP = WebViewPicture.Value

    Picture1.Cls

    Dim lAddr As Long
    RtlMoveMemory lAddr, BMP(10), 4

    Dim lWidth As Long
    RtlMoveMemory lWidth, BMP(18), 4

    Dim lHeight As Long
    RtlMoveMemory lHeight, BMP(22), 4


    ' BMPINFOをコピー
    Dim udtBM As BITMAPINFO
    For i = 0 To lAddr - 14 - 1
        udtBM.data(i) = BMP(i + 14)
    Next

    ' 画像表示
    SetDIBits Picture1.hdc, Picture1.Image, 0&, -1 * lHeight, BMP(lAddr), udtBM, 0&
    Picture1.Refresh
    
End Sub
