命令字符串

[与此页面关联的功能 MCI 是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 MCI。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

若要将字符串命令发送到 MCI 设备,请使用 mciSendString 函数,其中包括字符串命令的参数和任何返回信息的缓冲区。

如果成功, mciSendString 函数返回零。 如果函数失败,则返回值的低序字包含错误代码。 可以将此错误代码传递给 mciGetErrorString 函数,以获取错误的文本说明。

命令字符串的语法

MCI 命令字符串使用一致的谓词对象修饰符语法。 每个命令字符串包括命令、设备标识符和命令参数。 对于某些命令,参数是可选的,而对于其他命令,参数是必需的。

命令字符串具有以下形式:

命令device_id参数

这些组件包含以下信息:

  • 命令指定 MCI 命令,例如打开关闭播放

  • device_id标识 MCI 驱动程序的实例。 打开设备时会创建 device_id

  • 参数指定命令使用的标志和变量。 标志是使用 MCI 命令识别的关键字。 变量是应用于 MCI 命令或标志的数字或字符串。

    例如, play 命令使用参数“from position ”和“to position ”来指示开始和结束播放的位置。 可以按任意顺序列出用于命令的标志。 使用具有与之关联的变量的标志时,必须为变量提供值。

    未指定的 (和可选的) 命令参数采用默认值。

以下示例函数使用“from”和“to”标志发送 play 命令。

BOOL PlayFromTo(LPTSTR lpstrAlias, DWORD dwFrom, DWORD dwTo) 
{ 
    TCHAR achCommandBuff[128]; 
    int result;
    MCIERROR err;

    // Form the command string.
    result = _stprintf_s(
        achCommandBuff, 
        TEXT("play %s from %u to %u"), 
        lpstrAlias, dwFrom, dwTo); 

    if (result == -1)
    {
        return FALSE;
    }

    // Send the command string.
    err = mciSendString(achCommandBuff, NULL, 0, NULL); 
    if (err != 0)
    {
        return FALSE;
    }

    return TRUE;
} 

命令变量的数据类型

可以对命令字符串中的变量使用以下数据类型。

数据类型 描述
字符串 字符串数据类型由前导空格和尾随空格和引号分隔。 MCI 从字符串中删除单引号。 若要在字符串中放置引号,请使用一组两个引号,在其中嵌入引号。 若要使用空字符串,请使用由前导空格和尾随空格分隔的两个引号。
带符号长整数 带符号长整数数据类型由前导空格和尾随空格分隔。 除非另行指定,否则整数可以是正数或负数。 如果使用负整数,则不应用空格分隔减号和第一个数字。
矩形 矩形数据类型是四个有符号短值的有序列表。 空格分隔此数据类型,并分隔列表中的每个整数。