Run AVI Files inside a Picture Box 
February 25th, 2008, 10:20 AM
|  | Banned | | Join Date: Aug 2007 Location: Lahore Pakistan
Posts: 929
| |
Hi all,
Following Code will allow you to run any AVI file in a Picture Box.
Comment and Rate it!
API Declarations - Const WS_CHILD = &H40000000
-
-
Private Declare Function mciSendString Lib "winmm.dll" 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 "winmm.dll" Alias _
-
"mciGetErrorStringA" (ByVal dwError As Long, _
-
ByVal lpstrBuffer As String, ByVal uLength As Long) As Long
-
-
Private Declare Function GetShortPathName Lib "kernel32.dll" Alias _
-
"GetShortPathNameA" (ByVal lpszLongPath As String, _
-
ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Module 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 - '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 <<
| 
March 29th, 2008, 07:25 PM
| | Banned | | Join Date: Mar 2008
Posts: 18
| | | re: Run AVI Files inside a Picture Box
This is amazing,very good
| 
July 30th, 2008, 09:05 PM
|  | Moderator | | Join Date: Apr 2007 Location: New England
Posts: 7,096
| | | re: Run AVI Files inside a Picture Box
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?
|  |
Similar Threads | | Thread | Thread Starter | Forum | Replies | Last Post | | Playing Music From Access | mustardcharlie | answers | 3 | March 8th, 2008 12:37 AM | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 225,662 network members.
|