怎么在VB中插入视频
答案:5 悬赏:40 手机版
解决时间 2021-03-31 16:36
- 提问者网友:棒棒糖
- 2021-03-31 07:55
怎么在VB中插入视频
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-31 08:09
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 声道,通过它应该可以进行立体声、左声道、右声道的控制。
在弹出的对话框中
控件——选中“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 声道,通过它应该可以进行立体声、左声道、右声道的控制。
全部回答
- 1楼网友:第幾種人
- 2021-03-31 08:34
既然把播放器嵌入桌面不容易做到,那我们换一个思路:
在鼠标和键盘发生事件事,用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参数作了一点小手脚,改成了一个枚举类型,这主要是为了易于理解。
在鼠标和键盘发生事件事,用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参数作了一点小手脚,改成了一个枚举类型,这主要是为了易于理解。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯