Run AVI Files inside a Picture Box

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Ali Rizwan
    Banned
    Contributor
    • Aug 2007
    • 931

    Run AVI Files inside a Picture Box

    Hi all,
    Following Code will allow you to run any AVI file in a Picture Box.
    Comment and Rate it!

    API Declarations

    Code:
    Const WS_CHILD = &H40000000                    
    
    Private Declare Function mciSendString Lib "[url="http://www.andreavb.com/API_WINMM.html"]winmm.dll[/url]" Alias _                    
    	"mciSendStringA" (ByVal lpstrCommand As String, _                    
    	ByVal lpstrReturnString As String, ByVal uReturnLength As Long, _                    
    	ByVal hwndCallback As Long) As Long                    
    
    Private Declare Function mciGetErrorString Lib "[url="http://www.andreavb.com/API_WINMM.html"]winmm.dll[/url]" Alias _                    
    	"mciGetErrorStringA" (ByVal dwError As Long, _                    
    	ByVal lpstrBuffer As String, ByVal uLength As Long) As Long                    
    
    Private Declare Function GetShortPathName Lib "[url="http://www.andreavb.com/API_KERNEL32.html"]kernel32.dll[/url]" Alias _                    
    	"GetShortPathNameA" (ByVal lpszLongPath As String, _                    
    	ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
    Module CODE

    Code:
    ' FileName is a string containing the full path of the file.                    
    ' Window is the PictureBox in which you want that the movie                    
    ' is played; the movie is automatically resized to the picture box                    
    
    Sub PlayAVIPictureBox(FileName As String, ByVal Window As PictureBox)                    
    	Dim RetVal As Long                    
    	Dim CommandString As String                    
    	Dim ShortFileName As String * 260                    
    	Dim deviceIsOpen As Boolean                    
    
    	' Retrieve short file name format                    
    	RetVal = GetShortPathName(FileName, ShortFileName, Len(ShortFileName))                    
    	FileName = Left$(ShortFileName, RetVal)                    
    	                    
    	' Open the device                    
    	CommandString = "Open " & FileName & " type AVIVideo alias AVIFile parent " & _
    	                   CStr(Window.hWnd)                    & " style " & CStr(WS_CHILD)                    
    	RetVal = mciSendString(CommandString, vbNullString, 0, 0&)                    
    	If RetVal Then GoTo error                    
    		' remember that the device is now open                    
    		deviceIsOpen = True                    
    		' Resize the movie to PictureBox size                    
    		CommandString = "put AVIFile window at 0 0 " & CStr _                    
    		(Window.ScaleWidth / Screen.TwipsPerPixelX) & " " & _                    
    		CStr(Window.ScaleHeight / Screen.TwipsPerPixelY)                    
    		RetVal = mciSendString(CommandString, vbNullString, 0, 0&)                    
    	If RetVal <> 0 Then GoTo error                    
    	                   
    	' Play the file                    
    	CommandString = "Play AVIFile wait"                    
    	RetVal = mciSendString(CommandString, vbNullString, 0, 0&)                    
    	If RetVal <> 0 Then GoTo error                    
    	                    
    	' Close the device                    
    	CommandString = "Close AVIFile"                    
    	RetVal = mciSendString(CommandString, vbNullString, 0, 0&)                    
    	If RetVal <> 0 Then GoTo error                    
    
    	Exit Sub                    
    	 
    error:                    
    	' An error occurred.                    
    	' Get the error description                    
    	Dim ErrorString As String                    
    	ErrorString = Space$(256)                    
    	mciGetErrorString RetVal, ErrorString, Len(ErrorString)                    
    	ErrorString = Left$(ErrorString, InStr(ErrorString, vbNullChar) - 1)                    
    
    	' close the device if necessary                    
    	If deviceIsOpen Then                    
    		CommandString = "Close AVIFile"                    
    		mciSendString CommandString, vbNullString, 0, 0&                    
    	End If                    
    
    	' raise a custom error, with the proper description                    
    	Err.Raise 999, , ErrorString                    
    
    End Sub

    Using in a Form

    Code:
    'Create a Form with a PictureBox and a Command Button
    Option Explicit
    
    Private Sub Command1_Click()
        PlayAVIPictureBox "c:\winnt\clock.avi", Picture1
    End Sub
    Regards
    >> ALI <<
  • BorlandDelphi
    Banned
    New Member
    • Mar 2008
    • 18

    #2
    This is amazing,very good

    Comment

    • Plater
      Recognized Expert Expert
      • Apr 2007
      • 7872

      #3
      Maybe it is because I am not using VB6, but using this code elsewhere, while technically "working" is a little queezy.
      If I move the window that the picturebox is on, the video doesn't stay with it.
      Like if i move the window 10 pixels to the right, the left 10 pixels on the video will be gone (as if the video was drawn on a laayer BEHIND the gui window and that layer doesn't move with the gui window)
      Any thoughts?

      Comment

      Working...