shell 打开自动执行

mmycsh 2005-12-17 10:29:59
用midia player播放,在VB中建立一个shell语句,如何让它一执行就自动播放,不用按midia player 的播放键?
...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmycsh 2005-12-18
  • 打赏
  • 举报
回复
其实也就也是用shell把播放器打开,再用命令<Ctrl>+P,在播放器执行就行了.
不用太复杂,如何实现?
rainstormmaster 2005-12-18
  • 打赏
  • 举报
回复
//其实也就也是用shell把播放器打开,再用命令<Ctrl>+P,在播放器执行就行了.
不用太复杂,如何实现?

这样:
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Command1_Click()
Dim mhwnd As Long
Dim pid As Long
pid = Shell("e:\Program Files\Windows Media Player\wmplayer.exe", vbNormalFocus)

'查找类名为WMPlayerApp(这个类名是媒体播放器的顶级窗口的类名,这个类名在你的系统中可能是别的值,你用spy++看一下)的窗口,直到找到为止,这种查找的方法比较简单,但可能误中副车
Do While mhwnd = 0
mhwnd = FindWindow("WMPlayerApp", vbNullString)
DoEvents
Loop
SendKeys "^p"
End Sub
IamDeane 2005-12-17
  • 打赏
  • 举报
回复
使用File或者List控件里,将歌曲路径放到里面,然后利用ListIndex和ListCount就可以使用循环播放了
rainstormmaster 2005-12-17
  • 打赏
  • 举报
回复
Option Explicit

Private Type MenuItem
hMenu As Long
wID As Long
wIDType As Long
End Type

Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400&

Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Const MF_DISABLED = &H2&

Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const WM_COMMAND = &H111
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Function FindMenuIDByName(ByVal hMenu As Long, ByVal sName As String, mi As MenuItem)
Dim num As Long, i As Long
Dim sub_menu As Long, length As Long
Dim mnu_name As String
Dim cmdID As Long

If hMenu = 0 Then Exit Function
sName = Replace(sName, "&", "")
num = GetMenuItemCount(hMenu)
For i = 0 To num - 1
sub_menu = GetSubMenu(hMenu, i)
mnu_name = Space$(256)
length = GetMenuString(hMenu, i, mnu_name, Len(mnu_name), MF_BYPOSITION)
mnu_name = Left$(mnu_name, length)
mnu_name = Replace(mnu_name, "&", "")
If InStr(1, mnu_name, sName) > 0 Then
cmdID = GetMenuItemID(hMenu, i)
If cmdID = -1 Then 'Item ID
mi.hMenu = hMenu
mi.wID = i
mi.wIDType = MF_BYPOSITION
Else 'Command ID
mi.wID = cmdID
mi.wIDType = MF_BYCOMMAND
End If
Exit For
End If
FindMenuIDByName sub_menu, sName, mi
Next i
End Function

Private Sub Command1_Click()
Dim mhwnd As Long
Dim pid As Long
pid = Shell("e:\Program Files\Windows Media Player\wmplayer.exe")
Dim hMenu As Long, wID As Long
Dim mask As Long, key As Long
Dim mi As MenuItem
'查找类名为WMPlayerApp(这个类名是媒体播放器的顶级窗口的类名,这个类名在你的系统中可能是别的值,你用spy++看一下)的窗口,直到找到为止,这种查找的方法比较简单,但可能误中副车
Do While mhwnd = 0
mhwnd = FindWindow("WMPlayerApp", vbNullString)
DoEvents
Loop
hMenu = GetMenu(mhwnd)
mi.hMenu = hMenu
If hMenu = 0 Then Exit Sub
Dim s As String
s = "播放/暂停"
FindMenuIDByName hMenu, s, mi
'发送菜单命令 播放/暂停
SendMessage mhwnd, WM_COMMAND, mi.wID, ByVal 0&

End Sub
mmycsh 2005-12-17
  • 打赏
  • 举报
回复
我的意思是打开播放器时不是只放一首歌,而是把播放器里原有的所有歌都按顺序放出来.
和用手动打开播放器,再按播放键一样.
rainstormmaster 2005-12-17
  • 打赏
  • 举报
回复
Shell "C:\Program Files\Windows Media Player\wmplayer.exe e:\media\1400k.wmv"

或者,试试这样:
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
ShellExecute Me.hwnd, "play", "e:\media\1400k.wmv", vbNullString, vbNullString, 1

End Sub
hglai 2005-12-17
  • 打赏
  • 举报
回复
shell "c:/midia.exe d:/aa.wma"

答案来自:http://www.play78.com

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧