|
說明
透過MCI指令,我們可以很輕易的播放AVI檔,但是我們該如何控制他的位置呢 步驟如下
- "open FileName type AVIVideo alias mAVI parent hwnd style WS_CHILD" '開啟媒體檔
FileName是要開啟的檔名 mAVI是自訂的媒體名稱
hwnd是播放位置的hwnd WS_CHILD是常數
- "put mAVI window at lx ly lw lh" '設定視窗位置
lx是要播放的x座標 ly是y座標 lw是寬度 lh是高度
- "play mAVI" '播放
- "close mAVI" '最記的關閉
程式
Option Explicit Private Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As
Long Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Const WS_CHILD = &H40000000
Public Sub PlayAviFileAt(ByVal sFileName As String, lhWnd As Long, lx As Long, ly As Long, lw As Long, lh As Long) Dim FileName As String, ret As Long ret = GetShortPathName(sFileName, 0, 0)
FileName = String(ret - 1, Chr(0)) ret = GetShortPathName(sFileName, FileName, ret)
mciSendString "open " & FileName & " type AVIVideo alias mAVI parent " & CStr(hwnd) & " style "
& CStr(WS_CHILD), vbNullString, 0, 0 mciSendString "put mAVI window at " & CStr(lx) & " " & CStr(ly) & " " & CStr(lw) & " " & CStr(lh), vbNullString, 0, 0
mciSendString "play mAVI wait", vbNullString, 0, 0 mciSendString "close mAVI", vbNullString, 0, 0 End Sub
如果要再Form1上播放C:\aa.avi只要呼叫
PlayAviFileAt App.Path & "\FILECOPY.AVI", Form1.hwnd, 0, 0, Form1.ScaleWidth \ Screen.TwipsPerPixelX, Form1.ScaleHeight \ Screen.TwipsPerPixelY
文件出處
整理時間
|