有没有Tserver winsocket的控件,在什么位置?

解决方案 »

  1.   

    Tserver
    ->
    File - New - Other
      

  2.   

    system
    下的 MediaPlayer1,这个太大了一点吧,我就想弄一个小点的,只放midi就可以。谢谢你的关注。
      

  3.   

    uses MMSystem;
    PlaySound('MyMid.wav',hInstance,SND_ASYNC or SND_FILENAME);
    不知道可不可以播放midi文件
      

  4.   

    我来吧。前几天刚写过的。procedure PlayMidi(FileName:string;ACyc:Boolean);  //acyc是是否循环播放
    begin
      MidiFileName := FileName;
      CYC := ACyc;
      settimer(Application.Handle,MIDITIMER,500,@StatusMidi);  //Timer用来轮询midi的播放状态。不然你不知道他是否放完了。
      OpenParms.lpstrElementName := PChar(FileName); 
      OpenParms.lpstrDeviceType  := 'sequencer'; 
      dwParam := DWord(@openParms); 
      ERROR := mciSendCommand(0, MCI_OPEN,MCI_OPEN_TYPE OR MCI_OPEN_ELEMENT, dwParam); 
      if ERROR <> 0 then 
      begin
        KillTimer(Application.Handle,MIDITIMER);
        mciGetErrorString(ERROR, errString, 255); 
        MessageBox(0, ErrString,PChar(SBigError),MB_ICONSTOP or MB_OK);
      end;  mciId := openParms.wDeviceID; 
      ERROR := mciSendCommand(mciId, MCI_PLAY, MCI_NOTIFY, dwParam); 
      if ERROR <> 0 then
      begin 
        KillTimer(Application.Handle,MIDITIMER);
        mciGetErrorString(ERROR, errString, 255);
        MessageBox(0, ErrString,PChar(SBigError),MB_ICONSTOP or MB_OK); 
      end;
    end;procedure StatusMidi;               //检查MIDI播放状态
    var 
      StatusParm: TMCI_Status_Parms; 
      FFlags    : LongInt; 
    begin 
      FFlags := mci_Wait OR mci_Status_Item; 
      StatusParm.dwItem := mci_Status_Mode; 
      Error := mciSendCommand(MCIID, mci_Status, FFlags, LongInt(@StatusParm)); 
      // 526:Playing  525:Stopped  
      if StatusParm.dwReturn = 525 then
      begin
        StopMidi;
        if Cyc then PlayMidi(MidiFileName,Cyc);
      end;
    END;  procedure StopMidi; //这是停止
    begin 
      KillTimer(Application.Handle, MIDITIMER); 
      ERROR := mciSendCommand(mciId, MCI_CLOSE, 0, 0);
     
     { if ERROR <> 0 then
      begin
       mciGetErrorString(ERROR, errString, 255); 
       Label1.Caption := 'MCI_CLOSE: ' + errString; 
      end
      else begin
        Label1.Caption := 'MCI_CLOSE ausgeführt'; 
      END; }
    END;
      

  5.   

    声明忘了写给你  Cyc       :boolean;
      ERROR         : MCIERROR; 
      errString     : ARRAY[0..255] OF CHAR; 
      MCIID         : MCIDEVICEID; 
      dwParam       : DWord; 
      openParms     : TMCI_OPEN_PARMS;
      MidiFileName :String;