[python-win32] mciSendCommand from win32 ???
durumdara@mailpont.hu
durumdara at mailpont.hu
Mon Nov 28 13:55:00 CET 2005
Hi !
I want to call mciSendCommand to record a music in Windows.
I want to do same thing like in this code (Delphi):
procedure TForm1.OpenMedia;
var
MyOpenParms: TMCI_Open_Parms;
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,Cardinal(@MyOpenParms));
if MyError = 0 then FDeviceID:=MyOpenParms.wDeviceID;
end;
procedure TForm1.RecordMedia;
var
MyRecordParms: TMCI_Record_Parms;
set_parms: MCI_WAVE_SET_PARMS;
begin
set_parms.wFormatTag := WAVE_FORMAT_PCM;
set_parms.wBitsPerSample := 16;
set_parms.nChannels := 1;
set_parms.nBlockAlign :=
(set_parms.nChannels*set_parms.wBitsPerSample) div 8;
set_parms.nSamplesPerSec := 44100;
set_parms.nAvgBytesPerSec := ((set_parms.wBitsPerSample) *
set_parms.nChannels *
set_parms.nSamplesPerSec) div 8;
MyError:=mciSendCommand(FDeviceID,MCI_SET,
MCI_WAIT
or MCI_WAVE_SET_FORMATTAG
or MCI_WAVE_SET_BITSPERSAMPLE
or MCI_WAVE_SET_CHANNELS
or MCI_WAVE_SET_SAMPLESPERSEC
or MCI_WAVE_SET_AVGBYTESPERSEC
or MCI_WAVE_SET_BLOCKALIGN,
Cardinal(@set_parms));
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(OrgFileName,FileName:string);
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(FileName);
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;
1. Can I do it ?
2. If not, what is the solution (I haven't Delphi... I have only
freeware things)
Thanx for help: dd
More information about the Python-win32
mailing list