VB初学者》为程序添加背景音乐的方法(windows mediaplayer控件)
 
方法一:运用windows mediaplayer控件添加程序背景音乐
 
 
具体步骤如下
 
 
1>VB添加windows mediaplayer部件
ctrl+T激活添加部件对话框(如右图),勾选如图所示的windows mediaplayer选项,单击应用、确定
 工具栏里面出现按钮,双击添加控件
 
 
2>关机程序代码更改windows mediaplayer控件的属性
在窗体(下图)上出现windows mediaplayer控件
选中它,更改它的属性
 
 
 
其中的visible属性设置为false(如下图),这样的话,程序在运行的时候,windows mediaplayer控件是不可见的,其所播放的音乐就可以作为程序的背景音乐了
 
 
 
 
 
 
3>关于windows mediaplayer如何播放音乐文件的问题
解决办法有两种:
第一种:如上图所示,改变控件的URL属性,在百度音乐里搜索到自己希望的背景音乐,复制链接地址粘贴到这里(缺点是程序运行的时候,电脑没有联网或者网络资源不可用时就听不到背景音乐,网速查的时候,音乐会卡;优点是可以缩小程序文件体积)
 
 
第二种:把背景音乐整合到工程资源中(缺点是过程麻烦,程序文件体积大;优点是电脑程序启动后,电脑不需联网就可以听到背景音乐,缓冲过程几乎不存在,不受网速影响)
方法如下:
如下图所示,菜单栏选择外接程序——外界程序管理器——选中VB 6 资源编辑器,在右下角加载行为中勾选如右图两项后点击确定,在工具栏里会增加按钮——单击按钮打开“VB 资源编辑器
 
 
“VB 资源编辑器里单击添加自定义资源按钮打开对话框:打开一个自定义资源,选择你需要的音频文件即可
 
这样之后,调用资源需要用到LoadResDeta语句
代码参考
Private Sub Form_Load()
Dim TempData() As Byte
TempDataPath = "f:\1.mp3" '引号里你可以自定义盘符和路径作为资源加载的临时存储地址(临时文件)
TempData = LoadResData(101, "CUSTOM") '这是那个文件编号,具体可以自己在整合资源的时候更改,默认是101
Open TempDataPath For Binary Access Write As #1
Put #1, , TempData
Close #1
WindowsMediaPlayer1.URL = TempDataPath
End Sub
 
运用如下语句可以在程序运行完后删除刚刚提到的临时文件
Private Sub Form_Unload(Cancel As Integer)
Kill "f:\1.mp3" '刚刚你自己定义的路径(必须相同,否则程序报错)
End Sub
 
方法二 运用API函数中的mciSendString函数完成多媒体播放
XP下的关机代码
'把下边的代码放在一个模块中,调用ShutDownPC函数

Option Explicit

'ExitWindowsEx的参数uflags,有四个对应值,分别是:

Public Const EWX_LOGOFF = 0 '退出(注销)
Public Const EWX_SHUTDOWN = 1 '关机
Public Const EWX_REBOOT = 2 '重启动
Public Const EWX_FORCE = 4 '强制关机,即不通知现在活动应用程序让其先自我关闭
‘如执行多个操作,可以用OR连接

Public Const TOKEN_ADJUST_PRIVILEGES = &H20
Public Const TOKEN_QUERY = &H8
Public Const SE_PRIVILEGE_ENABLED = &H2
Public Const ANYSIZE_ARRAY = 1

Type LUID
  lowpart As Long
  highpart As Long
End Type


Type LUID_AND_ATTRIBUTES
  pLuid As LUID
  Attributes As Long
End Type

Type TOKEN_PRIVILEGES
  PrivilegeCount As Long
  Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type

Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Declare Function GetCurrentProcess Lib "kernel32" () As Long
Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (B
yVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long

'这个函数就是用于NT关机中使用的
Sub AdjustTokenPrivilegesForNT()

    Dim hdlProcessHandle As Long
    Dim hdlTokenHandle As Long
    Dim tmpLuid As LUID
    Dim tkp As TOKEN_PRIVILEGES
    Dim tkpNewButIgnored As TOKEN_PRIVILEGES
    Dim lBufferNeeded As Long

    hdlProcessHandle = GetCurrentProcess()
    OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _
                                                                    TOKEN_QUERY), hdlTokenHandle

    LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
    With tkp
      .PrivilegeCount = 1
      .Privileges(0).pLuid = tmpLuid
      .Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
    End With

  AdjustTokenPrivileges hdlTokenHandle, False, tkp, _
              Len(tkpNewButIgnored), tkpNewButIgnored, _
              lBufferNeeded
End Sub

Public Sub ShutDownPC(ByVal sCode As Long, Optional ByVal IsNt As Boolean = True)
   
    If IsNt = True Then Call AdjustTokenPrivilegesForNT '如果是NT以上系统就要先调用这个
    ExitWindowsEx sCode, 0 '注销
End Sub

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。