我用VB编了一个小程序,用innosetup打包的,但是安装到桌面后的快捷方式可以正确调用程序,放到开始程序菜单里面的程序快捷方式和快速启动栏里面的快捷方式没法正确调用程序。请教这个问题根源出在什么地方?描述:桌面快捷方式的程序可以打开程序,当程序运行满足条件时可以调用安装目录的声音文件,开始程序里面的快捷方式也可以正常打开EXE程序,但是当条件满足时,声音并没有响,我做了一下对比,两个快捷方式在其右击属性里面有所不同,一个起始位置写了安装路径,另一个没有,有安装路径的能响,没有的不能响,但是不知道在程序里面写怎么避免这个,请教高手给予指导?谢谢!不知道大家听懂没?呵呵...
(2)程序里面使用 App.Path & "\filename" 来代表文件路径。
musicPath = IIf(Right(App.path, 1) = "\", App.path, App.path & "\")
'RetValue = mciSendString("OPEN musicPath & test.rmi TYPE SEQUENCER ALIAS BackgroundMusic", "", 0, 0)(musicpath如下面2句所示)------1则后面有一句RetValue = mciSendString("STATUS BackgroundMusic MODE", MCIStatus, MCIStatusLen, 0)监测到MCIStatus=“”为空值,实际应该为=“stopped”,所以下面3句是有效的,而1句却不能正常调用声音,不知道为什么,也许问题就出在这,请教?Private Sub Form_Load()
Dim my As Long
Dim musicPath As String * 2048
musicPath = IIf(Right(App.path, 1) = "\", App.path, App.path & "\")
' musicPath = IIf(Right(App.path, 1) = "\", App.path, App.path & "\test.rmi")
'musicPath = App.path & "\test.rmi"-------2
Debug.Print musicPath
'###################################打开音乐
IsMusicOn = True
' RetValue = mciSendString("OPEN " & "C:\" & "test.rmi TYPE SEQUENCER ALIAS BackgroundMusic", "", 0, 0)
'RetValue = mciSendString("OPEN " & "C:\Program Files\BMP ONLINE CALL SYSTEM" & "\" & "test.rmi TYPE SEQUENCER ALIAS BackgroundMusic", "", 0, 0)
RetValue = mciSendString("OPEN test.rmi TYPE SEQUENCER ALIAS BackgroundMusic", "", 0, 0) -------3
'RetValue = mciSendString("OPEN musicPath & test.rmi TYPE SEQUENCER ALIAS BackgroundMusic", "", 0, 0)
'RetValue = mciSendString("OPEN musicPath TYPE SEQUENCER ALIAS BackgroundMusic", 0&, 0, 0)
'############################################..........
End SubPrivate Sub Timer2_Timer()
Dim strTitle As String
Dim hdl As Long
Dim MCIStatusLen As Integer
Dim MCIStatus As String
Dim Buffer As String * 128
Dim Ret As Long
Dim i
strTitle = Space(765)If IsMusicOn = True Then
MCIStatusLen = 15
MCIStatus = String(MCIStatusLen + 1, " ")
RetValue = mciSendString("STATUS BackgroundMusic MODE", MCIStatus, MCIStatusLen, 0)
Wintextstr = ""
Call EnumWindows(AddressOf EnumWindowsProc, 0)
Call EnumWindowsProc(GetForegroundWindow, 0) Debug.Print " MCIStatus="; MCIStatus, "MCIStatusLen="; MCIStatusLen,
Debug.Print UCase(Left$(MCIStatus, 7)) = "STOPPED", Left(Replace(Wintextstr, " ", ""), 9) = "Messenger"
If UCase(Left$(MCIStatus, 7)) = "STOPPED" And Left(Replace(Wintextstr, " ", ""), 9) = "Messenger" Then
RetValue = mciSendString("PLAY BackgroundMusic FROM 0", "", 0, 0)
ElseIf UCase(Left$(MCIStatus, 7)) = "STOPPED" And Left(Replace(Wintextstr, " ", ""), 9) = "信使服务" Then
RetValue = mciSendString("PLAY BackgroundMusic FROM 0", "", 0, 0)
ElseIf Left(Replace(Wintextstr, " ", ""), 9) <> "Messenger" And Replace(Wintextstr, " ", "") <> "信使服务" Then
'此处不能调用Call StopMusic,否则失败
mciSendString "stop BackgroundMusic", Buffer, Ret, 0 '注意stop BackgroundMusic
RetValue = mciSendString("CLOSE BackgroundMusic FROM 0", "", 0, 0) '注意有无FROM 0的区别End If
End If
End Sub