| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2652 人关注过本帖
标题:在win10x64下使用mci播放音乐崩溃
只看楼主 加入收藏
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
在win10x64下使用mci播放音乐崩溃
从原来的win7x86换成了win10x64,同样使用VS2017,在win7时可以正常使用mci播放.mp3音乐,win10下运行程序时崩溃,不知道什么情况。
已经确认了错误代码:
mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)&mciOpen);

异常是0x00007FFC3676CD15 (winmm.dll) (Valiant_game5.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x000000009ABCF79C 时发生访问冲突。 出现了
以下是整个函数的代码
程序代码:
UINT DeviceID;
void Music(WCHAR* a)
{
    char str[128] = { 0 };
    int i = 0;
    char buf[128] = { 0 };
    MCI_OPEN_PARMS mciOpen;
    MCIERROR mciError;
    mciOpen.lpstrDeviceType = _T("mpegvideo");
    mciOpen.lpstrElementName = a;
    mciError = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
    if (mciError)
    {
        return;
    }
    DeviceID = mciOpen.wDeviceID;
    MCI_PLAY_PARMS mciPlay;
    mciError = mciSendCommand(DeviceID, MCI_PLAY, 0, (DWORD)&mciPlay);
    if (mciError)
    {
        return;
    }
    return;
}

求助一下,不过如果有其他方法播放MP3音乐也可以
搜索更多相关主题的帖子: win10 mci 播放 音乐 崩溃 
2018-07-18 10:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
乱七八糟的看不懂
但看到 (DWORD)&mciOpen、(DWORD)&mciPlay 就很奇怪,为什么要强转,为什么要用不正确的强转
一查msdn,msdn上是 DWORD_PTR,不是 DWORD
2018-07-18 12:40
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
收藏
得分:0 
感谢,现在解决了
2018-07-18 15:05
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
收藏
得分:0 
不过现在发现按键函数又有问题。原本能用的地方没有反应,所以不管怎么点都不行。
出问题的地方如下
程序代码:
int GetPoint() {//按键
f1:
    POINT pt;
    HWND h;
    int x = 0, y = 0, q = 0, X = 0, Y = 0, b = me ? 0 : battle;
    while (1) {
        h = GetForegroundWindow();
        GetCursorPos(&pt);
        ScreenToClient(h, &pt);
        x = pt.x / 16, y = pt.y / 16;
        if (q && (X != x * 2 || Y != y)) {
            gotoxy(X, Y);
            X = 2 * x, Y = y;
            cout << "";
            q = 0;
        }
        if (p[x][y][0] && (X != x * 2 || Y != y)) {//这里不能用了
            if (GetAsyncKeyState(VK_LBUTTON))q = 0;
            else q = 1;
            goto f4;
        f5:
            X = 2 * x, Y = y;
            Color(c2 * 16 + c1);
            gotoxy(X, Y),
                cout << "";
            Color(c1 * 16 + c2);
        }
        if (GetAsyncKeyState(VK_LBUTTON)) {
            q = 0;
            break;
        }
    }
f4: if (!p[x][y][0])goto f1;
    if (p[x][y][0] < 17) {
        if (p[x][y][1] == ming)if (q)goto f5;
        else return p[x][y][0];
        else goto f1;
    }
    else if (p[x][y][0] == 17) {
        if (ming)if (q)goto f5;
        else return p[x][y][0];
        else goto f1;
    }
    else if (p[x][y][0] == 18) {
        if (ming)if (q)goto f5;
        else return p[x][y][0];
        else goto f1;
    }
    else if (p[x][y][0] == 19) {
        if (ming)if (q)goto f5;
        else menu();
        else goto f1;
    }
    else if (p[x][y][0] < 28) {
        if (b)if (q)goto f5;
        else return (p[x][y][0] - 20);
        else goto f1;
    }
    else if (p[x][y][0] < 64) {
        if (me == p[x][y][1]) {
            if (q)goto f5;
            else
                //            system("pause");
                me = 0;
            return (p[x][y][0] - 27);
        }
        else goto f1;
    }
    return 0;
}
2018-07-18 15:17
世优一人
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-6-16
收藏
得分:0 
你好,win10下崩溃,怎么解决的,教我下吧?
2019-08-27 10:41
快速回复:在win10x64下使用mci播放音乐崩溃
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045002 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved