Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PlaySound 
:(
    Опции темы
Mach3
Дата 20.11.2011, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



Добрый день.
Пытаюсь проиграть вавку : 
Код

PlaySound('signal.wav',0,SND_ASYNC);

На WinXP нормально работало.
На 7ке не пашет. Пикает просто..

Может чего не так делаю?
Спасибо.

Добавлено через 5 минут и 32 секунды
В TMediaPlayer проигрывается.
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
Mach3
Дата 20.11.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



использую delphi7
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
Alexeis
Дата 20.11.2011, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Mach3 @  20.11.2011,  12:29 Найти цитируемый пост)
На 7ке не пашет. Пикает просто..

  Файл не находит просто, попробуйте 
Код

procedure TForm3.FormCreate(Sender: TObject);
begin
  PlaySound('C:\Windows\Media\tada.wav',0,SND_ASYNC);
end;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Mach3
Дата 20.11.2011, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



Действительно, работает..
А мой файлик не играет и все.. 
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
MetalFan
Дата 20.11.2011, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Я отказался от PlaySound, т.к. оно играет почему-то далеко не все файлы...
Накидал себе такой класс... Возможно не без косяков, но вроде бы работает аналогично PlayFile с флагом асинхронности. Попробуй, может и под семеркой будет работать норм)
Код

  TMMPlayer = class
  private
    FFN: string;
    FMMHandle: THandle;
    FHWND: HWND;
    FErrStr: string;
    FPlaying: Boolean;
    FErr: Integer;
    FPlayFrom: Cardinal;
    FPlayTo: Cardinal;
    FFreeOnEnd: Boolean;
    procedure WndMethod(var AMSg: TMessage);
    function GetWND: HWND;
    function GetErrStr: string;
    property Wnd: HWND read GetWND;
    procedure Close(AHandle: Cardinal = 0);
    function Open: Boolean;

  public
    constructor Create( const AFileName: string; AStartPlay: Boolean );
    destructor Destroy; override;
    property FileName: string read FFN;
    function Play: Boolean;
    function Stop: Boolean;

    property ErrorStr: string read GetErrStr;
    property Error: Integer read FErr;
    property PlayFrom: Cardinal read FPlayFrom write FPlayFrom;
    property PlayTo: Cardinal read FPlayTo write FPlayTo;
    function PlayFile( const AFileName: string ): Boolean;
  end;

{ TMMPlayer }

procedure TMMPlayer.Close(AHandle: Cardinal = 0);
begin
  if AHandle = 0 then
    AHandle := FMMHandle;
  if AHandle = 0 then Exit;
  mciSendCommand( AHandle, MCI_CLOSE, MCI_WAIT, 0 );
  FPlaying := False;
  if AHandle = FMMHandle then
    FMMHandle := 0;
end;

constructor TMMPlayer.Create(const AFileName: string; AStartPlay: Boolean);
begin
  FFN := AFileName;
  if AStartPlay then
    Play;
end;

destructor TMMPlayer.Destroy;
begin
  if FHWND <> 0 then
    DeallocateHWnd(FHWND);
  inherited;
end;

function MCI_Error_Str( AErr: Cardinal ): string;
begin
  SetLength(Result, 128);
  if mciGetErrorString( AErr, PChar(Result), 128 ) then
    SetLength( Result , StrLen(PChar(Result)) )
  else
    Result := '';
end;


function TMMPlayer.GetErrStr: string;
begin
  Result := MCI_Error_Str(FErr);
end;

function TMMPlayer.GetWND: HWND;
begin
  if FHWND = 0 then
    FHWND := AllocateHWnd(WndMethod);
  Result := FHWND;
end;

function TMMPlayer.Open: Boolean;
var
  lOP: MCI_OPEN_PARMS;
begin
  Result := FMMHandle <> 0;
  if Result then Exit;
  Result := False;
  if not FileExists( FFN ) then Exit;
  FillChar(lOP, SizeOf(lOP), #0);
  FErrStr := '';
  FMMHandle := 0;
  lop.lpstrElementName := PChar(FFN);
  FErr := mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, DWORD(@lOP));
  if FErr <> 0 then
    Exit;
  FMMHandle := lOP.wDeviceID;
  Result := True;
end;



function TMMPlayer.Play: Boolean;
var
  lPP: MCI_PLAY_PARMS;
begin
  Result := False;
  if not FileExists( FFN ) then Exit;
  Close(FMMHandle);
  if not Open then Exit;
  if FPlaying then Exit;
  FillChar(lPP, SizeOf(lPP), #0);
  lPP.dwCallback := Wnd;
  FErr := mciSendCommand( FMMHandle, MCI_PLAY, MCI_NOTIFY, DWORD(@lPP) );
  if FErr <> 0 then
    Exit;
  Result := FErr = 0;
  if Result then
    FPlaying := True;
end;

function TMMPlayer.PlayFile(const AFileName: string): Boolean;
begin
  FFN := AFileName;
  Result := Play;
end;

function TMMPlayer.Stop: Boolean;
begin
  Result := False;
  if FMMHandle = 0 then Exit;
  FErr := mciSendCommand( FMMHandle, MCI_STOP, 0, 0 );
  Result := FErr = 0;
  if Result then
    FPlaying := False;
end;

procedure TMMPlayer.WndMethod(var AMsg: TMessage);
begin
  if AMSg.Msg = MM_MCINOTIFY then
  begin
    if AMSg.wParam = MCI_NOTIFY_SUCCESSFUL then
      Close(AMSg.LParam);
    if FFreeOnEnd then
      Free;
  end;
end;



Это сообщение отредактировал(а) MetalFan - 20.11.2011, 21:44


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.