vb的wmp控件的问题
我怎么能让CommonDialog控件里打开的文件然wmp控件播放,还有我怎么能直接双击某一个文件,这个程序就自动打开。求代码及注释...
我怎么能让CommonDialog控件里打开的文件然wmp控件播放,还有我怎么能直接双击某一个文件,这个程序就自动打开。求代码及注释
展开
1个回答
展开全部
小问题含量大啊
首先添加你说的两个控件和一个按钮控件,然后在按钮的单击事件里写
On Error GoTo userCanceled
With CommonDialog1
.CancelError = True
.Flags = cdlOFNHideReadOnly Or cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNNoDereferenceLinks
.Filter = "所有文件(*.*)|*.*"
.ShowOpen
End With
if .FileName <> "" then WindowsMediaPlayer1.url = .FileName
userCanceled:
这样,wmp控件就可以播放文件了
至于文件关联,你可以添加一个菜单,标题为关联文件,事件里通过写入注册表的方式通知系统双击这个文件由我来执行,注册表写法,以swf文件为例
Dim Ws
Set Ws = CreateObject("wscript.shell")
Ws.Regwrite "HKEY_CLASSES_ROOT\.swf\", "swffile", "REG_SZ" '定义文件类型
Ws.Regwrite "HKEY_CLASSES_ROOT\ShockwaveFlash.FilesList\Shell\Open\Command\", App.Path & "\" & App.EXEName & ".exe %1", "REG_SZ" '打开方式列表
Ws.Regwrite "HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash\", "clksir swf files", "REG_SZ" '显示文件类型
Ws.Regwrite "HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash\Shell\Open\Command\", App.Path & "\" & App.EXEName & ".exe %1", "REG_SZ" '关联全局类型
Ws.Regwrite "HKEY_CLASSES_ROOT\swffile\DefaultIcon\", App.Path & "\" & App.EXEName & ".exe,1", "REG_SZ" '关联自身的图标资源号
Ws.Regwrite "HKEY_CLASSES_ROOT\swffile\shell\open\command\", App.Path & "\" & App.EXEName & ".exe %1", "REG_SZ" '关联启动
这样就可以了,图标是为了个性化,是选择一个理想的图标放在资源文件里的,就不细说了,如果你不想让关联后的文件发生图标变化,可以把图标那行去掉,要注意这些方法虽然解决了你的问题,但被双击打开的文件不会自动播放,还需要点击wmp控件的播放按钮才可以播放,如果想自动播放还要在窗体的加载事件里写一句WindowsMediaPlayer1.url = Command
这样就可以自动播放了
最要命的问题又来了,看似完美了,但是你每双击一个文件便会打开一个你编写的程序,而不是象通常的播放器那样只显示在一个窗口里,如果想只显示在一个窗口里还需要在窗体的加载事件和LinkExecute事件里用到和操作系统相互通讯的技术,你可以到网上搜索LinkMode关键词来详细的探索,祝你成功
首先添加你说的两个控件和一个按钮控件,然后在按钮的单击事件里写
On Error GoTo userCanceled
With CommonDialog1
.CancelError = True
.Flags = cdlOFNHideReadOnly Or cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNNoDereferenceLinks
.Filter = "所有文件(*.*)|*.*"
.ShowOpen
End With
if .FileName <> "" then WindowsMediaPlayer1.url = .FileName
userCanceled:
这样,wmp控件就可以播放文件了
至于文件关联,你可以添加一个菜单,标题为关联文件,事件里通过写入注册表的方式通知系统双击这个文件由我来执行,注册表写法,以swf文件为例
Dim Ws
Set Ws = CreateObject("wscript.shell")
Ws.Regwrite "HKEY_CLASSES_ROOT\.swf\", "swffile", "REG_SZ" '定义文件类型
Ws.Regwrite "HKEY_CLASSES_ROOT\ShockwaveFlash.FilesList\Shell\Open\Command\", App.Path & "\" & App.EXEName & ".exe %1", "REG_SZ" '打开方式列表
Ws.Regwrite "HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash\", "clksir swf files", "REG_SZ" '显示文件类型
Ws.Regwrite "HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash\Shell\Open\Command\", App.Path & "\" & App.EXEName & ".exe %1", "REG_SZ" '关联全局类型
Ws.Regwrite "HKEY_CLASSES_ROOT\swffile\DefaultIcon\", App.Path & "\" & App.EXEName & ".exe,1", "REG_SZ" '关联自身的图标资源号
Ws.Regwrite "HKEY_CLASSES_ROOT\swffile\shell\open\command\", App.Path & "\" & App.EXEName & ".exe %1", "REG_SZ" '关联启动
这样就可以了,图标是为了个性化,是选择一个理想的图标放在资源文件里的,就不细说了,如果你不想让关联后的文件发生图标变化,可以把图标那行去掉,要注意这些方法虽然解决了你的问题,但被双击打开的文件不会自动播放,还需要点击wmp控件的播放按钮才可以播放,如果想自动播放还要在窗体的加载事件里写一句WindowsMediaPlayer1.url = Command
这样就可以自动播放了
最要命的问题又来了,看似完美了,但是你每双击一个文件便会打开一个你编写的程序,而不是象通常的播放器那样只显示在一个窗口里,如果想只显示在一个窗口里还需要在窗体的加载事件和LinkExecute事件里用到和操作系统相互通讯的技术,你可以到网上搜索LinkMode关键词来详细的探索,祝你成功
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询