请问用API函数怎么播放已经存在的MID文件,具体怎么调用?

解决方案 »

  1.   

    我来自BCB的灌水大军-海军部队
    ┏━━━━━━━━━━━━━┓
    ┃※※※※★★★★★※※※┃
    ┃※终级掠食者—大白鲨※※┃
    ┃※※※★★★★★※※※※┃
    ┗━━━━━━━━━━━━━┛我有自动放分机要吗? 可惜的是BCB专利啊!!!!!!!!!
      

  2.   

    用MCI相关函数://定义函数
    function SendMciStr(const Msg:String):PChar;
    var Buf:Array[0..4095] of Char;
    Begin
    MciSendString(Pchar(msg),Buf,Sizeof(Buf),Handle);//调用MciSendString
    Result:=Buf;
    End//调用
    SendMciStr('Open c:\some.mid alias mid');//打开MID文件
    SendMciStr('Play mid notify');//播放
      

  3.   

    uses MMSystem;procedure TForm1.Button1Click(Sender: TObject);
    var
      vError: DWORD;
      vBuffer: array[0..1024]of Char;
    begin
      vError := mciSendString('open c:\temp\mas.mid alias mid', nil, 0, 0);
      if vError <> 0 then begin
        mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
        MessageDlg(vBuffer, mtError, [mbOK], 0);
        Exit;
      end;
      vError := mciSendString('play mid notify', nil, 0, 0);
      if vError <> 0 then begin
        mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
        MessageDlg(vBuffer, mtError, [mbOK], 0);
        Exit;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      vParams: MCI_OPEN_PARMS;
      vError: DWORD;
      vBuffer: array[0..1024]of Char;
    begin
      vParams.lpstrDeviceType := PChar(MCI_DEVTYPE_SEQUENCER);
      vParams.lpstrElementName := 'c:\temp\mas.mid';
      vError := mciSendCommand(0, MCI_OPEN,
        MCI_WAIT or MCI_OPEN_ELEMENT or MCI_OPEN_TYPE or MCI_OPEN_TYPE_ID,
        DWORD(@vParams));
      if vError <> 0 then begin
        mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
        MessageDlg(vBuffer, mtError, [mbOK], 0);
        Exit;
      end;
      vError := mciSendCommand(vParams.wDeviceID, MCI_PLAY, MCI_NOTIFY, DWORD(@vParams));
      if vError <> 0 then begin
        mciGetErrorString(vError, vBuffer, SizeOf(vBuffer));
        MessageDlg(vBuffer, mtError, [mbOK], 0);
        Exit;
      end;
    end;