在VB中如何用windows media play11 控件建立一个临时的音乐播放器。

下次自动登录
现在的位置:
& 综合 & 正文
如何在VB 6.0 sp6 中使用WindowsMediaPlayer控件?编写一个属于自己的多媒体播放器?
如何在VB 6.0 sp6 中使用WindowsMediaPlayer控件?编写一个属于自己的多媒体播放器?
具体步骤如下:
1、建立一个空窗体。
2、加入WindowsMediaPlayer控件(也可以完全由生成),更名为Player
3、加入两个命令按钮:cmdPlay,cmdStop
4、sub cmdPlay_Clicked:
With Player
.uiMode = "none"
.URL = "D:/MUSIC/雨人.wma"
.Controls.PlayEnd With5、sub cmdStop_Clicked:
Player.Controls.Stop
6、运行一下看看效果。
更多的控制将在下文中介绍。
&&&&推荐文章:
【上篇】【下篇】用QMediaPlayer实现MP3音乐播放器(C++&Qt)
这个国庆又没闲着,利用中间这几天实现了一个简易的MP3音乐播放器,其音乐播放的核心功能是采用Qt
QMultimedia中的QMediaPlayer控件(网上使用Phonon框架的较多)。在实现的过程中,界面使用Qt
Designer设计,这在很大程度上减小了C++代码量。时间紧迫,只实现了一些基本的功能,当然,要将播放器做得很完美,还是需要投入不少时间的。
(一)开发环境:
Windows 7/C++ Qt5.1 sdk/Qt Creator2.8
(二)下载地址:
最近更新:日
源代码下载地址:
(三)基本功能:
播放、暂停、停止、上一首、下一首、进度调节、列表循环、随机播放、单曲循环、顺序播放、音量调节、窗口移动、最小化到系统托盘、歌曲列表的显示与隐藏以及批量导入等功能。
(四)播放器截图:
图(1):播放器主界面
图(2): 右键菜单界面
图(3):系统托盘图标界面
(五)源代码分享:
以下是MainWindow.h头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
namespace Ui {
class MainWindow;
class QAction;
class QMenu;
class QMediaPlayer;
class QMediaPlaylist;
class QSystemTrayIcon;
class MainWindow : public QMainWindow
explicit MainWindow(QWidget *parent = <span STYLE="CoLor: #);
~MainWindow();
private slots:
void positionChanged(qint64);
void durationChanged(qint64);
void playTo(int, int);
void updateSongList(int);
void showOrHideSongList();
void importSongs();
void playLast();
void playOrPause();
void playNext();
void plusSound();
void reduceSound();
void setPlaybackMode1();
void setPlaybackMode2();
void setPlaybackMode3();
void setPlaybackMode4();
void support();
void aboutUs();
void setPosition(int);
void iconActivated(QSystemTrayIcon::ActivationReason reason);
protected:
void mousePressEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
void closeEvent(QCloseEvent *);
void createContextMenu();
void createSystemTrayIcon();
Ui::MainWindow *ui;
QPoint dragPos;
int volume;
QAction *restoreAction;
QAction *quitAction;
QAction *seperatorAction1;
QAction *seperatorAction2;
QAction *seperatorAction3;
QAction *seperatorAction4;
QAction *seperatorAction5;
QMenu *trayContextMenu;
QMediaPlayer *player;
QMediaPlaylist *playList;
QSystemTrayIcon *trayIcon;
#endif // MAINWINDOW_H
以下是MainWindow.cpp实现文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui-&setupUi(this);
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);
ui-&horizontalSlider-&setRange(<span STYLE="CoLor: #, <span STYLE="CoLor: #);
ui-&tableWidget-&hide();
ui-&tableWidget-&hideColumn(<span STYLE="CoLor: #);
volume=<span STYLE="CoLor: #;
createContextMenu();
createSystemTrayIcon();
playList=new QMediaPlaylist;
playList-&setPlaybackMode(QMediaPlaylist::Loop);
player=new QMediaPlayer;
player-&setPlaylist(playList);
player-&setVolume(volume);
connect(ui-&horizontalSlider, SIGNAL(sliderMoved(int)), this, SLOT(setPosition(int)));
connect(ui-&tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(playTo(int, int)));
connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(positionChanged(qint64)));
connect(player, SIGNAL(durationChanged(qint64)), this, SLOT(durationChanged(qint64)));
connect(playList, SIGNAL(currentIndexChanged(int)), this, SLOT(updateSongList(int)));
connect(ui-&action_SongList, SIGNAL(triggered()), this, SLOT(showOrHideSongList()));
connect(ui-&action_Import, SIGNAL(triggered()), this, SLOT(importSongs()));
connect(ui-&action_Last, SIGNAL(triggered()), this, SLOT(playLast()));
connect(ui-&action_Play, SIGNAL(triggered()), this, SLOT(playOrPause()));
connect(ui-&action_Stop, SIGNAL(triggered()), player, SLOT(stop()));
connect(ui-&action_Next, SIGNAL(triggered()), this, SLOT(playNext()));
connect(ui-&action_SoundPlus, SIGNAL(triggered()), this, SLOT(plusSound()));
connect(ui-&action_SoundReduce, SIGNAL(triggered()), this, SLOT(reduceSound()));
connect(ui-&action_Mode1, SIGNAL(triggered()), this, SLOT(setPlaybackMode1()));
connect(ui-&action_Mode2, SIGNAL(triggered()), this, SLOT(setPlaybackMode2()));
connect(ui-&action_Mode3, SIGNAL(triggered()), this, SLOT(setPlaybackMode3()));
connect(ui-&action_Mode4, SIGNAL(triggered()), this, SLOT(setPlaybackMode4()));
connect(ui-&action_Support, SIGNAL(triggered()), this, SLOT(support()));
connect(ui-&action_About, SIGNAL(triggered()), this, SLOT(aboutUs()));
connect(ui-&action_Quit, SIGNAL(triggered()), this, SLOT(close()));
connect(ui-&toolButton_Last, SIGNAL(clicked()), this, SLOT(playLast()));
connect(ui-&toolButton_Play, SIGNAL(clicked()), this, SLOT(playOrPause()));
connect(ui-&toolButton_Stop, SIGNAL(clicked()), player, SLOT(stop()));
connect(ui-&toolButton_Next, SIGNAL(clicked()), this, SLOT(playNext()));
MainWindow::~MainWindow()
delete ui;
void MainWindow::createContextMenu()
seperatorAction1=new QAction(this);
seperatorAction1-&setSeparator(true);
seperatorAction2=new QAction(this);
seperatorAction2-&setSeparator(true);
seperatorAction3=new QAction(this);
seperatorAction3-&setSeparator(true);
seperatorAction4=new QAction(this);
seperatorAction4-&setSeparator(true);
seperatorAction5=new QAction(this);
seperatorAction5-&setSeparator(true);
addAction(ui-&action_SongList);
addAction(ui-&action_Import);
addAction(seperatorAction1);
addAction(ui-&action_Last);
addAction(ui-&action_Play);
addAction(ui-&action_Stop);
addAction(ui-&action_Next);
addAction(seperatorAction2);
addAction(ui-&action_Mode1);
addAction(ui-&action_Mode2);
addAction(ui-&action_Mode3);
addAction(ui-&action_Mode4);
addAction(seperatorAction3);
addAction(ui-&action_SoundPlus);
addAction(ui-&action_SoundReduce);
addAction(seperatorAction4);
addAction(ui-&action_Support);
addAction(ui-&action_About);
addAction(seperatorAction5);
addAction(ui-&action_Quit);
setContextMenuPolicy(Qt::ActionsContextMenu);
void MainWindow::createSystemTrayIcon()
trayIcon=new QSystemTrayIcon(this);
trayIcon-&setIcon(QIcon(tr(":/new/background/images/icon.ico")));
trayIcon-&setToolTip(tr("酷音听听 - 音乐播放器"));
restoreAction=new QAction(tr("打开主面板"), this);
connect(restoreAction, SIGNAL(triggered()), this, SLOT(show()));
quitAction=new QAction(tr("退出"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
trayContextMenu=new QMenu(this);
trayContextMenu-&addAction(ui-&action_SongList);
trayContextMenu-&addAction(ui-&action_Import);
trayContextMenu-&addSeparator();
trayContextMenu-&addAction(ui-&action_Last);
trayContextMenu-&addAction(ui-&action_Play);
trayContextMenu-&addAction(ui-&action_Stop);
trayContextMenu-&addAction(ui-&action_Next);
trayContextMenu-&addSeparator();
trayContextMenu-&addAction(ui-&action_Mode1);
trayContextMenu-&addAction(ui-&action_Mode2);
trayContextMenu-&addAction(ui-&action_Mode3);
trayContextMenu-&addAction(ui-&action_Mode4);
trayContextMenu-&addSeparator();
trayContextMenu-&addAction(ui-&action_SoundPlus);
trayContextMenu-&addAction(ui-&action_SoundReduce);
trayContextMenu-&addSeparator();
trayContextMenu-&addAction(ui-&action_Support);
trayContextMenu-&addAction(ui-&action_About);
trayContextMenu-&addSeparator();
trayContextMenu-&addAction(restoreAction);
trayContextMenu-&addAction(quitAction);
trayIcon-&setContextMenu(trayContextMenu);
trayIcon-&show();
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), \
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason)
switch(reason) {
case QSystemTrayIcon::DoubleClick:
case QSystemTrayIcon::Trigger:
if(this-&isVisible()==true) {
this-&show();
this-&activateWindow();
void MainWindow::closeEvent(QCloseEvent *event)
if(trayIcon-&isVisible()) {
trayIcon-&showMessage(tr("提示"), tr("酷音听听将在后台运行"));
event-&ignore();
event-&accept();
void MainWindow::mousePressEvent(QMouseEvent *event)
if(event-&button()==Qt::LeftButton) {
dragPos=event-&globalPos()-frameGeometry().topLeft();
event-&accept();
void MainWindow::mouseMoveEvent(QMouseEvent *event)
if(event-&buttons()&Qt::LeftButton) {
move(event-&globalPos()-dragPos);
event-&accept();
void MainWindow::positionChanged(qint64 position)
ui-&horizontalSlider-&setValue(position);
void MainWindow::durationChanged(qint64 duration)
ui-&horizontalSlider-&setRange(<span STYLE="CoLor: #, duration);
void MainWindow::updateSongList(int i)
ui-&tableWidget-&selectRow(i);
ui-&label-&setText(tr("正在播放: %1").arg(ui-&tableWidget-&item(i, <span STYLE="CoLor: #)-&text()));
void MainWindow::showOrHideSongList()
if(ui-&tableWidget-&isHidden()) {
ui-&tableWidget-&show();
ui-&tableWidget-&hide();
void MainWindow::playTo(int i, int )
playList-&setCurrentIndex(i);
player-&play();
void MainWindow::importSongs()
QString initialName=QDir::homePath();
QStringList pathList=QFileDialog::getOpenFileNames(this, tr("选择文件"), initialName, tr(".mp3"));
for(int i=<span STYLE="CoLor: #; i&&/SPAN&pathList.size(); ++i) {
QString path=QDir::toNativeSeparators(pathList.at(i));
if(!path.isEmpty()) {
playList-&addMedia(QUrl::fromLocalFile(path));
QString fileName=path.split("\\").last();
int rownum=ui-&tableWidget-&rowCount();
ui-&tableWidget-&insertRow(rownum);
ui-&tableWidget-&setItem(rownum, <span STYLE="CoLor: #, new QTableWidgetItem(fileName.split(".").front()));
ui-&tableWidget-&setItem(rownum, <span STYLE="CoLor: #, new QTableWidgetItem(fileName.split(".").last()));
ui-&tableWidget-&setItem(rownum, <span STYLE="CoLor: #, new QTableWidgetItem(path));
void MainWindow::playLast()
int currentIndex=playList-&currentIndex();
if(--currentIndex&&/SPAN&<span STYLE="CoLor: #) currentIndex=<span STYLE="CoLor: #;
playList-&setCurrentIndex(currentIndex);
player-&play();
void MainWindow::playOrPause()
if(ui-&toolButton_Play-&text()==tr("播放")) {
player-&play();
ui-&toolButton_Play-&setText(tr("暂停"));
player-&pause();
ui-&toolButton_Play-&setText(tr("播放"));
void MainWindow::playNext()
int currentIndex=playList-&currentIndex();
if(++currentIndex==playList-&mediaCount()) currentIndex=<span STYLE="CoLor: #;
playList-&setCurrentIndex(currentIndex);
player-&play();
void MainWindow::plusSound()
volume+=<span STYLE="CoLor: #;
if(volume&=<span STYLE="CoLor: #0) {
volume=<span STYLE="CoLor: #0;
ui-&action_SoundPlus-&setEnabled(false);
player-&setVolume(volume);
if(!ui-&action_SoundReduce-&isEnabled())
ui-&action_SoundReduce-&setEnabled(true);
void MainWindow::reduceSound()
volume-=<span STYLE="CoLor: #;
if(volume&=<span STYLE="CoLor: #) {
volume=<span STYLE="CoLor: #;
ui-&action_SoundReduce-&setEnabled(false);
player-&setVolume(volume);
if(!ui-&action_SoundPlus-&isEnabled())
ui-&action_SoundPlus-&setEnabled(true);
void MainWindow::setPosition(int position)
player-&setPosition(position);
void MainWindow::setPlaybackMode1()
playList-&setPlaybackMode(QMediaPlaylist::Loop);
void MainWindow::setPlaybackMode2()
playList-&setPlaybackMode(QMediaPlaylist::Random);
void MainWindow::setPlaybackMode3()
playList-&setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
void MainWindow::setPlaybackMode4()
playList-&setPlaybackMode(QMediaPlaylist::Sequential);
void MainWindow::support()
QMessageBox::about(this, tr("关于酷音听听"), \
tr("酷音听听,感谢您的使用!"));
void MainWindow::aboutUs()
const QUrl url(".cn/terrynotes");
QDesktopServices::openUrl(url);
以下是main.cpp文件:
#include "mainwindow.h"
int main(int argc, char *argv[])
QApplication a(argc, argv);
MainWindow w;
return a.exec();
由于最近工作非常繁忙,播放器程序就先试验到此了,主要是为了学习不规则窗体UI的设计,UI是一门很高深的学问,要做好还要下相当大的功夫。
我的更多文章:
( 23:25:28)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。最后解答一下风兄的问题:如果风兄的计算机中有以我的名字命名的文件(C:\韵乐飞扬.mp3 ),那么代码可以正常运行,如果没有,那么就会出现上述情况.
风兄不会那么强,照着把 C:\韵乐飞扬.mp3 也复制进去吧,难道风兄的计算机中有 C:\韵乐飞扬.mp3 这个文件?
我一直以为风兄是个有水平的人,可是却问这样的问题,难道风兄水平仅此呼?如果风兄仍有问题,欢迎再次提问.
看来我不加点注释,是没人能看懂的....
C:\韵乐飞扬.mp3 是你要打开的文件路径名,比如你要打开c:\tesk.mp3,那么请将此句改为: mciExecute &#034;Play c:\tesk.mp3&#034; .
为何启动后会出现 &#034;指定的设备未打开,或不被MCI所识别&#034;
您的举报已经提交成功,我们将尽快处理,谢谢!
有的手机 内部有这种功能 用数据线接到电脑上 把音乐文件copy到手机上即可
大家还关注
<a href="/b/.html" target="_blank" title="求简单VB程序 设计vb程序,a和b均为变量,a数值不停变化,b为a变化比较值的累加,如a为100,下一秒为80,b=20,再下一秒,a=20,b就为80,如果a变化比较值为求简单VB程序 设计vb程序,a和b均为...
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'下次自动登录
现在的位置:
& 综合 & 正文
AxMediaPlayer控件使用方法(非AxWindowsMediaPlayer控件)
一:c#中播放MP3文件
首先,我们要生成MediaPlayer.dll 和 AxMediaPlayer.dll控件:
   方法如下:命令为:aximp c:\winnt\system32\msdxm.ocx 而通常                         msdxm.ocx中的ActiveX控件都未注册! 则先运行regsvr32                        msdxm.ocx手动注册便生成需要的动态连接库文件。
其次:填写如下:
private void button1_Click(object sender, System.EventArgs e)
{//浏览MP3文件
if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
this.listView1.Items.Clear();
string []FileNames=this.openFileDialog1.FileN
foreach(string FileName in FileNames)
//取得文件大小
FileInfo MyFileInfo=new FileInfo(FileName);
float MyFileSize=(float)MyFileInfo.Length/();
this.axMediaPlayer1.FileName=FileN
//取得作者信息
string MyAuthor=this.axMediaPlayer1.GetMediaInfoString(MediaPlayer.MPMediaInfoType.mpClipAuthor);
//取得不含路径的文件名
string MyShortFileName=FileName.Substring(FileName.LastIndexOf(");
MyShortFileName=MyShortFileName.Substring(0,MyShortFileName.Length-4);
//填充歌曲列表
string[] SubItem={MyShortFileName,MyAuthor,MyFileSize.ToString().Substring(0,4)+"M",FileName};
ListViewItem Item=new ListViewItem(SubItem);
this.listView1.Items.Add(Item);
this.listView1.Items[0].Selected=
private void button2_Click(object sender, System.EventArgs e)
{//播放MP3文件
if(this.listView1.Items.Count&0)
if(this.listView1.SelectedItems.Count&0)
int iPos=this.listView1.SelectedItems[0].I
string FileName=this.listView1.Items[iPos].SubItems[3].T
this.axMediaPlayer1.FileName=FileN
this.axMediaPlayer1.Play();
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.rmation);
private void button4_Click(object sender, System.EventArgs e)
{//暂停播放
if(this.axMediaPlayer1.FileName.Length&0)
this.axMediaPlayer1.Pause();
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.rmation);
private void button5_Click(object sender, System.EventArgs e)
{//停止播放
if(this.axMediaPlayer1.FileName.Length&0)
this.axMediaPlayer1.Stop();
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.rmation);
private void button6_Click(object sender, System.EventArgs e)
{//上一首歌曲
if(this.listView1.Items.Count&0)
if(this.listView1.SelectedItems.Count&0)
int iPos=this.listView1.SelectedItems[0].I
if(iPos&0)
this.listView1.Items[iPos-1].Selected=
string FileName=this.listView1.Items[iPos-1].SubItems[3].T
this.axMediaPlayer1.FileName=FileN
this.axMediaPlayer1.Play();
MessageBox.Show("已经是第一首歌曲!","信息提示",MessageBoxButtons.rmation);
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.rmation);
private void button7_Click(object sender, System.EventArgs e)
{//下一首歌曲
if(this.listView1.Items.Count&0)
if(this.listView1.SelectedItems.Count&0)
int iPos=this.listView1.SelectedItems[0].I
if(iPos&this.listView1.Items.Count-1)
this.listView1.Items[iPos+1].Selected=
string FileName=this.listView1.Items[iPos+1].SubItems[3].T
this.axMediaPlayer1.FileName=FileN
this.axMediaPlayer1.Play();
MessageBox.Show("已经是最后一首歌曲!","信息提示",MessageBoxButtons.rmation);
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.rmation);
二:C#中播放AVI短片并使背景透明
我发现他所用的MediaPlayer控件是可以播放许多的媒体文件.但是并不能满足我所需要的情况。我的情况是用C#播放一小段AVI文件,并且背景要透明,而不是黑色,或其他颜色,我找了半天也不能找到什么方法可以使MediaPlayer播放的文件为透明的状态,十分郁闷!
但是随后我发现其他用VB的程序中可以实现这个功能,让我十分的高兴,于是我又打开了VB的进行了详细的查看,发现在VB中有一个控件为Animation可以播放AVI文件,而且其有一个属性选项是使背景透明。正好能够满足我的需要.可是这也是一个OCX的控件,于是,我先把该控件找到,位置是:C:\WINDOWS\SYSTEM32\COMCT32.ocx,然后我运行regsvr32进行手动注册,注册完毕以后我就在环境中进行引用,如下图:
(但是,后来本人发现原来这个根本不用regsvr32注册,因为.NET早已经注册了,郁闷中~~~~~~~~~~~~~~)
然后把控件拖入到窗体中,布好了局,将其属性AutoPlay设置为true,然后在代码中写入下边一句话即可:
private void Form1_Load(object sender, System.EventArgs e)
  this.axAnimation1.Open(Application.StartupPath +@"\FILECOPY.AVI");
这样当窗体加载的时候就会自动的播放这一小段AVI文件了.其实,这个问题并不是很难,主要是本人对COM组件并不是特别熟悉的过.只要熟悉这些组件的功能,以及运行的原理,势必会大大的提高我们的编程的效率。
&&&&推荐文章:
【上篇】【下篇】VB中的Windows Media Player控件,如何播放本地音乐_百度知道
VB中的Windows Media Player控件,如何播放本地音乐
具体步骤如下:1、建立一个空窗体。2、加入WindowsMediaPlayer控件(也可以完全由代码生成),更名为Player3、加入两个命令按钮:cmdPlay,cmdStop4、sub cmdPlay_Clicked:With Player& .uiMode = &none&& .URL = &D:/MUSIC/雨人.wma&& .Controls.PlayEnd With5、sub cmdStop_Clicked:Player.Controls.Stop
其他类似问题
为您推荐:
3……) WindowsMediaP
controls?si=9" target="_blank">http,包括音量和声道等.com/question/:boolean
非全屏状态时是否伸展到最佳大小 uMode.baidu.playState=(1.html?si=10" target="_blank">http,是DurationString:boolean
全屏显示 stretchToFit、右声道的控制.URL=&quot.currentPositionString.controls对播放器进行控制并取得相关的一些信息;&quot:正在播放 2.com/question/。参考 http.currentPositionString属性来获取它的时间://zhidao?si=8
在设计模式下选择WindowsMediaPlayer的“自定义……”可以设置它的相关基本属性;0。---------不好意思;False WindowsMediaPlayer1://zhidao.baidu.baidu.baidu?si=7
是WindowsMediaPlayer吧,下面是三种基本状态:integer 音量 (0-100) settings.baidu.windowlessVideo = True&#47.html.html:
/question/9039089.
controls:有下面的控制条,窗口模式--最大化还是最小化WindowsMediaPlayer主要用到以下属性.baidu.balance。参考 <a href="http://zhidao:34&quot,通过它应该可以进行立体声:已停止 状态变化时会触发OnStatusChange事件 [controls] 可通过WindowsMediaPlayer:/question/2643585.currentMedia取得当前媒体的信息
currentMedia.html: WindowsMediaPlayer:string
播放器的模式;& [currentMedia] 可以通过WindowsMediaPlayer.Close 关闭播放器参考 <a href="http:string 时间格式的字符串 &不显示播放位置的右键菜单 fullScreen:////question/.html
参考资料:
bba127d3abb9d8b4
其他1条回答
avi,代码如下;a:&#92;a;a:相对路径当然可以,比方说与程序文件在同一路径。WindowsMediaPlayer1.path & &quot.avi&quot:&#92.Url =&#92;==========================比方说音乐路径是D;D,那么代码就是 WindowsMediaPlayer1.Url = &quot.avi&quot答案补充
player的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 windows media play 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信