求大佬讲解
vb吧
全部回复
仅看楼主
level 2
大佬好:
我在学习函数播放音频时,有这么个代码,就是我写完以后运行不了,也不知道问题出在哪里,
"winmm.dll"我感觉应该是这里出了问题这是个路径吗?不知道怎么处理求大神解答,谢谢!!
2022年11月02日 09点11分 1
level 2
11111111
2022年11月02日 09点11分 2
level 15
API函数名区分大小写,就是Alias后面那个名称,应该写成"mciSendStringA"
2022年11月02日 11点11分 3
改完了,还是一样
2022年11月02日 11点11分
@泪之城《伤》 没注意到你声明了好几个API函数,总之都要注意区分大小写,正确的大小写格式你自行确定吧,懒得给你找了;另外就是楼下说的问题,有一个函数的别名(Alias)写错了
2022年11月02日 11点11分
level 11
不但大小写要区分,我还看到第二个Declare的Alias跟第一个重复了
2022年11月02日 11点11分 4
level 11
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" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
2022年11月02日 11点11分 5
level 11
我查了一下,三个Alias分别是
mciSendStringA
mciGetErrorStringA
GetShortPathNameA
2022年11月02日 12点11分 6
level 11
5楼6楼第一时间没显示,换成图片
2022年11月02日 12点11分 7
还有问题把错误报告发出来看看
2022年11月02日 12点11分
level 5
检查一下动态链接库是否缺少moisendstringa该函数或此函数是否被破坏,如果是的话重新下载一个相应的dll文件来解决。
2022年11月02日 12点11分 8
问题是这函数不叫moisendstringa啊,而是叫mciSendStringA
2022年11月02日 12点11分
@初音✨七奈 :可能哪图比较模糊我把c看成o大概意思不变。[呵呵]
2022年11月02日 12点11分
@基金小虎哥🐯 重点是字母的大小写,楼主全打成小写了所以错了
2022年11月02日 12点11分
问题已经解决,确实有些复杂,细节很重要,具体解决方法在下面的回复中,在此谢谢各位了[哈哈]
2022年11月04日 08点11分
level 11
我查了一下,三个Alias分别应该是:
第一个"mciSendStringA"
第二个"mciGetErrorStringA"
第三个"GetShortPathNameA"
还有什么问题把错误报告发出来看看
2022年11月02日 12点11分 9
level 11
第一个mciSendStringA,第二个mciGetErrorStringA,第三个GetShortPathNameA,还有什么问题把错误报告发出来看看
2022年11月02日 12点11分 10
level 11
我写的有英文就发不出来
2022年11月02日 12点11分 11
mciSendStringA mciGetErrorStringA GetShortPathNameA
2022年11月02日 12点11分
第一个声明,第四、八、十四个字母大写;第二个声明改过来后,第四、七、十二、十八个字母大写;第三个声明,第一、四、九、十三、十七个字母大写[狂汗]
2022年11月02日 12点11分
level 15
看到上面缺了好多楼……我来发一下试试:
mciSendStringA
mciGetErrorStringA
GetShortPathNameA
2022年11月02日 13点11分 12
level 2
我按照各位给出的意见已经改完了,但是还是不好用,这次能强很多,但是点击播放没有反应,也不出声音!请帮忙再次指点指点,谢谢了!! 以下附上代码
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" Alias "GetShortPathNameA" ( _
ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, _
ByVal cchBuffer As Long) As Long
Private Sub cmdOpen_Click()
Dim fileName As String
Dim strl As String
Dim mciCommand As String
Dim shortName As String
Dim err As Long
Dim errStr As String
On Error GoTo errhandler
comDlg.fileName = ""
comDlg.Filter = " *.mp3| *.mp3"
comDlg.ShowOpen
fileName = comDlg.fileName
lbPath.Caption = comDlg.fileName
strl = String(LenB(fileName), Chr(0))
GetShortPathName fileName, strl, Len(strl)
shortName = Left(strl, InStr(strl, Chr(0)) - 1)
mciSendString "close openFile", vbNullString, 0, 0
mciCommand = "open" & shortName & "alias openFile type MPGEVideo"
err = mciSendString(mciCommand, vbNullString, 0, 0)
Exit Sub
errhandler:
mciGetErrorString err, errStr, 1024
MsgBox errStr
End Sub
Private Sub cmdExit_Click()
mciSendString "close openFile", vbNullString, 0, 0
End
End Sub
Private Sub cmdPlay_Click()
mciSendString "play openFile", vbNullString, 0, 0
End Sub
Private Sub cmdPause_Click()
mciSendString "pause openFile", vbNullString, 0, 0
End Sub
Private Sub cmdstop_Click()
mciSendString "stop openFile", vbNullString, 0, 0
End Sub
2022年11月04日 02点11分 13
level 11
代码中有一行
mciCommand = "open" & shortName & "alias openFile type MPGEVideo"
改成
mciCommand = "open " & shortName & " alias openFile type MPEGVideo"
就是shortName两旁要加上空格,并且是MPEGVideo,再试试
2022年11月04日 05点11分 14
厉害[大拇指],当之无愧的大神,谢谢
2022年11月04日 08点11分
1