title: Live View with Canon EDSDK 2.5.2 VB.NET
body: <p>I am trying to do 1 of two things, preference number 1:</p>
  
  <p>Turn on the Live View using VB.NET and the Canon EDSDK 2.5.2 and render the live output in a Windows Forms application.  Currently I am trying to put it to a picture box; however, I am open to suggestions for sure.</p>
  
  <p>The second option would be to at least turn on the Live View and have it stream via the Video output on the camera to a monitor.</p>
  
  <p>I really want to accomplish the first though!  Below is my current codebase, help!</p>
  
  <pre><code>Private Sub btnStartLiveView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartLiveView.Click
  
      Dim err As Integer = EDS_ERR_OK
  
  
      Dim prop As Integer = EdsEvfOutputDevice.kEdsEvfOutputDevice_PC
      Dim proptype As Integer = EDSDKTypes.kEdsPropID_Evf_OutputDevice
      '// Stock the property.'
      Dim wkIntPtr As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(prop))
      Marshal.StructureToPtr(prop, wkIntPtr, False)
      'send property/command to the camera'
      EdsSetPropertyData(model.getCameraObject(), proptype, 0, Marshal.SizeOf(prop), prop)
  
      Dim stream As IntPtr
      Dim outMemoryRef As IntPtr
      Dim evfImage As IntPtr
  
      err = EdsCreateMemoryStream(0, stream)
  
      If err = EDS_ERR_OK Then
  
          err = EdsCreateImageRef(stream, outMemoryRef) '(stream, evfImage)'
  
      Else
  
          Dim str As String = Hex(err)
  
          MessageBox.Show(str)
  
      End If
  
      If err = EDS_ERR_OK Then
          err = EdsDownloadEvfImage(model.getCameraObject(), evfImage)
      Else
  
          Dim str As String = Hex(err)
  
          MessageBox.Show("&amp;H" &amp; str &amp; "L") ' Shows &amp;H2CL which = ERR_FILE_FORMAT_NOT_RECOGNIZED'
      End If
  
      ' Get the Incidental Data of the Image'
  
      If err = EDS_ERR_OK Then
  
          Dim zoom As UInt32
          Dim point As IntPtr
  
  
          EdsGetPropertyData(outMemoryRef, kEdsPropID_Evf_ZoomPosition, 0, Marshal.SizeOf(zoom), zoom)
  
          EdsGetPropertyData(outMemoryRef, kEdsPropID_Evf_ZoomPosition, 0, Marshal.SizeOf(point), point)
  
      Else
  
          'MessageBox.Show(err.ToString())'
  
      End If
  
  
      Dim buffer(Marshal.SizeOf(stream)) As Byte
  
      Dim mStream As System.IO.Stream = New System.IO.MemoryStream(Marshal.SizeOf(stream))
  
  
      Dim gcTime As GCHandle = GCHandle.Alloc(0, GCHandleType.Pinned)
      Dim pTime As IntPtr = gcTime.AddrOfPinnedObject()
      Marshal.Copy(stream, buffer, 0, Marshal.SizeOf(stream))
  
      mStream.Write(buffer, 0, Marshal.SizeOf(stream))
  
      Me.PictureBox1.Image = Image.FromStream(mStream)
  
      EdsRelease(stream)
  End Sub
  </code></pre>