关于mciSendString打包问题,高手请进!
我简单的做了个在Picturebox里播放视频的程序,用到了mciSendString,打包前执行程序没什么问题,但是打包后老是出错:运行时错误 13 ,类型不匹配。代码如下:
- VB code
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 LongPrivate Declare Function SetWindowPos Lib "USER32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongSub PlayVideo(vName As String) '播放视频文件 Dim tmpVal As String, KeyValSize As Long, result As Long Picture1.ScaleMode = 3 Picture1.BorderStyle = 0 mciSendString "open " & vName & " type MPEGVideo alias Mympg parent " & Picture1.hwnd & " style child WAIT ", vbNullString, 0, 0 tmpVal = String$(256, 0) KeyValSize = 256 result = mciSendString("STATUS Mympg WINDOW HANDLE WAIT ", tmpVal, KeyValSize, 0) tmpVal = Left(tmpVal, KeyValSize) SetWindowPos CLng(tmpVal), 0, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, 0 mciSendString "play Mympg ", vbNullString, 0, 0End SubPrivate Sub Form_Activate() PlayVideo App.Path & "\dj0.wmv"End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) mciSendString "close Mympg ", vbNullString, 0, 0End Sub我分析了下,应该是
- VB code
result = mciSendString("STATUS Mympg WINDOW HANDLE WAIT ", tmpVal, KeyValSize, 0)[解决办法]
我把SetWindowPos CLng(tmpVal), 0, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, 0
屏蔽了,可以运行,也能播放