- 热门文章:
- · Web Browser Express 概述
- · datagrid编辑删除分页
- · 展现C# 清单5.10 生成exe文件执行的问题
- · 联通增值业务“定位之星”L1协议服务端的模拟器
- · 一个自认为写得还可以的存储过程,就是没有注释,看起来有点乱。与ERP的BOM相关的
- · [EnterpriseServices]利用assembly定义我们的组件在COM+中的注册方式
- · 给windows服务添加描述
- · 用户认证管理设计方案
- · Solidworks二次开发—07—控制草图对象
- · 数据库事务处理的另外一种方法
- · 《Essential .Net》读书笔记 - Chapter 3
- · DX图形显示基本流程(基于MESH静态模型绘制----托管代码)
上一篇:用TreeView显示数据通用方法 >>
无外部控件制作多媒体播放器(一)
利用MCI指令制作播放器,简单实用,很适合于做为自己软件的一个附带功能或背景音乐,正是基于这点需求,我准备分几个部分来写:
1、MCI指令的简单使用;
2、媒体播放的进度控制与音量调节;
3、音乐信息的读取,包括MP3(ID3V1 & ID3V2)与ASF(WMA & WMV)等;
4、音乐列表的建立与保存(M3U格式)
本来主要是想写播放音乐的,举个播放视频的例子,没什么别的意思,只是感觉播放音乐实在是简单,没什么可写,同时也是为了说明,MCI放视频也是可以的。
Private Const WS_CHILD = &H40000000
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 GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private 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 Long
Private Function ShortName(LName As String) As String
@#取得短文件名
Dim s As String, i As Long
i = 512
s = Space$(i)
GetShortPathName LName, s, i
ShortName = Left$(s, InStr(1, s, vbNullChar) - 1)
End Function
Private Function PlayMCI(Cmd As String, Optional ReturnStr As String) As Long
@#播放MCI
Dim s As String
s = Space$(256)
PlayMCI = mciSendString(Cmd, s, 256, 0)
ReturnStr = Left$(s, InStr(1, s, vbNullChar) - 1)
End Function
Private Function ShowVideo(strFileName As String, hwd As Long, x As Long, y As Long, w As Long, h As Long) As Long
Dim i As Long, s As String
If Dir(strFileName, vbHidden Or vbReadOnly Or vbSystem) = vbNullString Or strFileName = vbNullString Then Exit Function
i = PlayMCI("open """ & ShortName(strFileName) & """ alias Song parent " & hwd & " style " & WS_CHILD & " WAIT")
If i <> 0 Then Exit Function
i = PlayMCI("STATUS Song WINDOW HANDLE WAIT", s)
If i <> 0 Then GoTo fail
i = Val(s)
If i = 0 Then GoTo fail
SetWindowPos i, 0, x, y, w, h, 0
PlayMCI "play Song"
ShowVideo = i @#若成功返回视频窗口的句柄
Exit Function
fail:
PlayMCI "close Song"
End Function
Private Sub cmdPlay_Click()
i=ShowVideo("h:\1.wmv", Me.hWnd, 0, 0, 100, 100)
@#返回的这个句柄,很有用的,可用于移动窗口位置,或SubClass它,加上弹出菜单,响应鼠标动作等
If i <> 0 Then
cmdPlay.Enabled = False
cmdStop.Enabled = True
End If
End Sub
Private Sub cmdStop_Click()
PlayMCI "close Song"
cmdPlay.Enabled = True
cmdStop.Enabled = False
End Sub
Private Sub Form_Load()
Me.ScaleMode = 3
cmdPlay.Enabled = True
cmdStop.Enabled = False
cmdPlay.Caption = "播放"
cmdStop.Caption = "停止"
End Sub
Private Sub Form_Unload(Cancel As Integer)
PlayMCI "close Song"
End Sub
下一篇:Web Browser Express 概述 >>
相关文章:
- · 如何让 DevExpress 的 DateEdit 控件正确显示日期的周名
- · ASP.net下的前台日历控件源代码(不刷新页面)
- · 通过可视化继承和页面模板控制站点设计
- · 在ASP.Net中两种利用CSS实现多界面的方法
- · 数据表单向导的快速实现
- · Posting form data from ASP.NET page to another URL
- · Asp.net中Treeview终极解决方案
- · 解决ASP.NET创建的线程的用户改变引发的拒绝访问错误
- · 有关sql注入
- · 一个动态编译的例子
- · 一个拷贝整个文件夹(包括子文件夹)的方法(原创)
- · 在ASP.NET中实现弹出日历
- · 在DataGrids和DropDownLists中使用ADO
- · asp.net 页面中生成 RSS 2.0 提要
- · Session登陆后丢失的解决办法
- · 基于HTTP协议用WinSock实现任意文件下载
- · 奔腾Flash Player source code
- · 《Essential .Net》读书笔记 - Chapter 2
- · 《Essential .Net》读书笔记 - Chapter 1
- · 获取指定IP的终端的MAC地址
- · 网络传输(FTP)问题
- · Paint.NET: An Open Source GDI+ App Likes Photoshop
- · 看到有人用 WebClient来下载, 发篇用 WebRequest 实现有进度下载的吧.
- · 树形控件TreeView的序列化
- · 使用javascript+XML实现分页
- · 使用Control.Invoke处理多线程应用程序界面
- · WEB页面TreeView的应用-(得到所有选中的节点)
- · DotNetNuke(DNN)
- · 枚举器模式(Enumerator pattern)
- · 用ASP.NET 1.1 新特征防止Script攻击
- · 关于ASP.Net中的时间处理
- · javascript实现的数据表格:冻结列、调整列宽和客户端排序
- · [常见问题]cookie使用1.Page与HttpContext的Request、Response
- · 怎样在页面和页面的用户控件进行交互
- · webform页面间传值的特殊方法
- · 怎么直接建立一个DataTable并且为之添加数据
- · 我的第一个Asp.Net程序
- · 如何把数据放到web不能访问的文件夹中并给用户下载?
