Contributor: SWAG SUPPORT TEAM
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.


AltStyle によって変換されたページ (->オリジナル) /