This document describes the process for creating added functionality ,that many Delphi users have requested, to the TMediaPlayer. The new functionality is the ability to create a new file with the .wav format when recording. The procedure "SaveMedia" creates a record type that is passed to the MCISend command. There is an appexception that calls close media if any error occurs while attempting to open the specified file. The application consists two buttons. Button1 calls the OpenMedia and RecordMedia procedures in that order.The CloseMedia procedure is called whenever an exception is generated in this application. Button2 calls the StopMedia,SaveMedia, and CloseMedia procedures. unit utestrec; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,MPlayer,MMSystem,StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure AppException(Sender: TObject; E: Exception); private FDeviceID: Word; { Private declarations } public procedure OpenMedia; procedure RecordMedia; procedure StopMedia; procedure SaveMedia; procedure CloseMedia; end; var Form1: TForm1; implementation {$R *.DFM} var MyError,Flags: Longint; procedure TForm1.OpenMedia; var MyOpenParms: TMCI_Open_Parms; MyPChar: PChar; TextLen: Longint; begin Flags:=mci_Wait or mci_Open_Element or mci_Open_Type; with MyOpenParms do begin dwCallback:=Handle; // TForm1.Handle lpstrDeviceType:=PChar('WaveAudio'); lpstrElementName:=PChar(''); end; MyError:=mciSendCommand(0, mci_Open, Flags, Longint(@MyOpenParms)); if MyError = 0 then FDeviceID:=MyOpenParms.wDeviceID; end; procedure TForm1.RecordMedia; var MyRecordParms: TMCI_Record_Parms; TextLen: Longint; begin Flags:=mci_Notify; with MyRecordParms do begin dwCallback:=Handle; // TForm1.Handle dwFrom:=0; dwTo:=10000; end; MyError:=mciSendCommand(FDeviceID, mci_Record, Flags, Longint(@MyRecordParms)); end; procedure TForm1.StopMedia; var MyGenParms: TMCI_Generic_Parms; begin if FDeviceID <> 0 then begin Flags:=mci_Wait; MyGenParms.dwCallback:=Handle; // TForm1.Handle MyError:=mciSendCommand(FDeviceID, mci_Stop, Flags, Longint(@MyGenParms)); end; end; procedure TForm1.SaveMedia; type // not implemented by Delphi PMCI_Save_Parms = ^TMCI_Save_Parms; TMCI_Save_Parms = record dwCallback: DWord; lpstrFileName: PAnsiChar; // name of file to save end; var MySaveParms: TMCI_Save_Parms; begin if FDeviceID <> 0 then begin // save the file... Flags:=mci_Save_File or mci_Wait; with MySaveParms do begin dwCallback:=Handle; lpstrFileName:=PChar('c:\message.wav'); end; MyError:=mciSendCommand(FDeviceID, mci_Save, Flags, Longint(@MySaveParms)); end; end; procedure TForm1.CloseMedia; var MyGenParms: TMCI_Generic_Parms; begin if FDeviceID <> 0 then begin Flags:=0; MyGenParms.dwCallback:=Handle; // TForm1.Handle MyError:=mciSendCommand(FDeviceID, mci_Close, Flags, Longint(@MyGenParms)); if MyError = 0 then FDeviceID:=0; end; end; procedure TForm1.Button1Click(Sender: TObject); begin OpenMedia; RecordMedia; end; procedure TForm1.Button2Click(Sender: TObject); begin StopMedia; SaveMedia; CloseMedia; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnException := AppException; end; procedure TForm1.AppException(Sender: TObject; E: Exception); begin CloseMedia; end; end.