Ребята, плиз. Может, у кого-нибудь заработает следующий код. Проверьте, как будет время.
| Код | ...
private procedure MCINOTIFY(var msg:TMessage); message MM_MCINOTIFY;
...
procedure TForm1.MCINOTIFY(var msg: TMessage); begin case msg.WParam of MCI_NOTIFY_SUCCESSFUL: MessageBox(0,'Сообщение MCI_NOTIFY_SUCCESSFUL поймано!','', MB_OK); MCI_NOTIFY_ABORTED: MessageBox(0,'Сообщение MCI_NOTIFY_ABORTED поймано!','', MB_OK); MCI_NOTIFY_FAILURE: MessageBox(0,'Сообщение MCI_NOTIFY_FAILURE поймано!','', MB_OK); MCI_NOTIFY_SUPERSEDED: MessageBox(0,'Сообщение MCI_NOTIFY_SUPERSEDED поймано!','', MB_OK); end; end;
procedure TForm1.Button1Click(Sender: TObject); var PlayParm: TMCI_Play_Parms; OpenParm: TMCI_Open_Parms; DeviceID: Integer; begin ZeroMemory(@OpenParm, SizeOf(OpenParm)); OpenParm.lpstrDeviceType := Pointer(MCI_DEVTYPE_CD_AUDIO); //указали, что хотим воспроизвести аудио-диск OpenParm.dwCallback := Form1.Handle; //Окно, что ловит сообщения OpenParm.lpstrElementName := 'H'; //буква диска mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_TYPE_ID or MCI_OPEN_ELEMENT, LongInt(@OpenParm)); //Открыли устройство DeviceID := OpenParm.wDeviceID;
ZeroMemory(@PlayParm, SizeOf(PlayParm)); PlayParm.dwCallback := Form1.Handle; mciSendCommand(DeviceID, mci_Play, MCI_NOTIFY, Integer(@PlayParm)) //Запустили проигрывание end;
|
Пы.Сы. MCI_NOTIFY_SUCCESSFUL приходит, когда аудио-диск польностью проигран. Точнее раньше приходил, на более старом железе и системой WindowsXP. У кого-то мой код работает? Может, у кого-нибудь есть пример, где MCI_NOTIFY_SUCCESSFUL успешно ловиться? Пожалуйста, поделитесь. |