永发信息网

怎么在VB中插入视频

答案:5  悬赏:40  手机版
解决时间 2021-03-31 16:36
怎么在VB中插入视频
最佳答案
Ctrl T
在弹出的对话框中
控件——选中“Windows Media Player”项 应用
在工具栏新出现一个控件图标
新建此控件
使用如下:
==========WindowsMediaPlayer的常用属性和方法===========
[基本属性]
URL:string 可以指定媒体位置
enableContextMenu:Boolean 显示/不显示播放位置的右键菜单
fullScreen:boolean 全屏显示
stretchToFit:boolean 非全屏状态时是否伸展到最佳大小
uMode:string 播放器的模式,full:有下面的控制条; none:只有播放部份没有控制条
playState:integer 当前控件状态,下面是三种基本状态:
3:正在播放
2:暂停
1:已停止
状态变化时会触发OnStatusChange事件
[controls]
可通过WindowsMediaPlayer.controls对播放器进行控制并取得相关的一些信息:
controls.play; 播放
controls.stop; 停止
controls.pause; 暂停
controls.currentPosition:Double 当前播放进度
controls.currentPositionString:string 时间格式的字符串 "0:32"
[currentMedia]
可以通过WindowsMediaPlayer.currentMedia取得当前媒体的信息
currentMedia.duration Double 总长度
currentMedia.durationString 时间格式的字符串 "4:34"
[settings]
可以通过WindowsMediaPlayer.settings对播放器进行设置,包括音量和声道等。
settings.volume:integer 音量 (0-100)
settings.balance:integer 声道,通过它应该可以进行立体声、左声道、右声道的控制。
全部回答
既然把播放器嵌入桌面不容易做到,那我们换一个思路:
在鼠标和键盘发生事件事,用showwindow隐藏播放器(别急,不是你想的那样听我说),把焦点给上一个获得焦点的窗体或是桌面,这段时间内鼠标和键盘件事应该是被阻止的,所以要用到StartMaskKey,但我们的目的不是真正阻止事件,只是暂时的,阻止的事就交给DLL去,只要没有返回值DLL就不会让event发生,所以我们要用到AdressOf 进行函数回调,因为回调函数后,焦点是在操作去,所以你的操作将与平常没什么区别
继续,然后再用timer控件检查鼠标和键盘的发生,若没有事件就马上显示播放器并前置
这样,只要你的电脑足够快,其间的闪烁人眼是发觉不了的,一般配置的估计会微微闪一下,不会有很大问题的,N年前的古董的话,想都别想了...
下面是主要程序的代码提示,看看,基本就是用这个来扩展了:
'在窗体上添加2个CommandButton,并分别改名为cmdStartMask和cmdStopMask)
Option Explicit
Private Declare Function StartMaskKey Lib "MaskKey" (lpdwVirtualKey As Long, ByVal nLength As Long, ByVal lpfnKeyboarProc As Long, Optional ByVal bDisableKeyboard As Boolean = False) As Long
Private Declare Function StopMaskKey Lib "MaskKey" () As Long
Private Sub cmdStartMask_Click()
' 屏蔽 A, B, C, 上, 下, 左, 右及两个win键
Dim key(8) As Long
key(0) = vbKeyA
key(1) = vbKeyB
key(2) = vbKeyC
key(3) = vbKeyLeft
key(4) = vbKeyRight
key(5) = vbKeyUp
key(6) = vbKeyDown
key(7) = &H5B ' 左边的win键
key(8) = &H5C ' 右边的win键
StartMaskKey key(0), UBound(key) + 1, AddressOf KeyboardProc
End Sub
Private Sub cmdStopMask_Click()
StopMaskKey
End Sub
窗体模块的代码和以前的例程几乎一样,只是在调用StartMaskKey函数时加了一个参数:AddressOf KeyboardProc。在VB中用过回调函数的人对这东西绝不会陌生,AddressOf是一个一元运算符,后面接一个函数名,它的功能就是获得指定函数的指针。但有一点必须注意,该回调函数(此例中为KeyboardProc)必须写在VB的标准模块中,标准模块的代码如下:
Option Explicit
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_SYSKEYUP = &H105
Public Type KBDLLHOOKSTRUCT
vkCode As Long ' 虚拟按键码(1--254)
scanCode As Long ' 硬件按键扫描码
flags As Long ' flags
time As Long ' 消息时间戳
dwExtraInfo As Long ' 额外信息
End Type
Public Enum KEYACTION
ACTION_KEYDOWN = WM_KEYDOWN
ACTION_KEYUP = WM_KEYUP
ACTION_SYSKEYDOWN = WM_SYSKEYDOWN
ACTION_SYSKEYUP = WM_SYSKEYUP
End Enum
' 全局键盘钩子回调函数
' 参数: action 标识键盘消息(按下,弹起), keyStruct 包含按键信息
Public Function KeyboardProc(ByVal action As KEYACTION, keyStruct As KBDLLHOOKSTRUCT) As Boolean
Select Case action
Case ACTION_KEYDOWN
Debug.Print keyStruct.vkCode, "按下键盘按键"
Case ACTION_KEYUP
Debug.Print keyStruct.vkCode, "弹起键盘按键"
Case ACTION_SYSKEYDOWN
Case ACTION_SYSKEYUP
End Select
' 返回 True 表示继续传递按键消息
' 返回 False 表示结束按键消息传递
KeyboardProc = False
End Function
' 这个VB标准模块中的KeyboardProc有没有点MFC消息映射函数的味道呢?!需要注意的是,VB的回调函数必须写在标准模块中。细心的人还可能会发现,我对action参数作了一点小手脚,改成了一个枚举类型,这主要是为了易于理解。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
急求 俄罗斯进口木材 (樟松原木的价格)
现在分词的 一般式和完成式什么区别
我想找会昌县一个汪姓人,不知道住哪?有什么
贾平凹的《废都》讲的是什么?
工程地质勘查中经常用到的规范有哪些?
哪里可以下载.网游之巅峰全本txt
李胜贤都演了什么电影和电视剧,要很详细的。
带美有什么成语
香煎椒盐银鱼怎么做好吃,香煎椒盐银鱼的家
求翻译日文句子
材料部分有序 小角xrd会出峰吗
未来航空公司会招男空少吗?
蔓越莓怎么吃
请问毛泽东诗词中“敢叫日月换新天”中是“叫
描写雪前景色的句子或片段有哪些?
推荐资讯
白浅说让夜华折腾散架子了是怎么回事
没读高中怎么参加普通全国高考
求解签 红云随步起 一箭中青霄 鹿行千里外 真
怎样知道自己是不是减肥成功
法华经中大通智如来在菩提树下结跏趺坐十小劫
为什么说大公司老板的电话号码不能给别人?
清朝乾隆时“富商巨贾挟其重资,多买田地,或
长沙商贸旅游职业技术学院-信息技术系怎么去
【高分求助】关于androidph的问题,望高手指
有限循环小数是正数吗
纳兰性德的词《临江仙》
家族的秘密高泰兰是谁演的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?