|
Вопрос # 3 669/ вопрос решён / |
|
Здравствуйте!
Уважаемые эксперты.
Подскажите, пожалуйста, как мне проиграть файлы wav. из ресурса EXE файла?
Нужно проиграть в потоке. Вот у меня, что-то получилось. Как проиграть второй файл?
И как остановить поток? А то файл играет, пока не закончится.
Я замаялась!
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls,MMSystem;
-
- type
- TForm1 = class(TForm)
- Button1: TButton;
- Button2: TButton;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- TSpeakThread = class(TThread)
- protected
-
- procedure Execute; override;
- end;
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
- {$R SOUND.RES }
-
- { TSpeakThread }
-
- procedure TSpeakThread.Execute;
- var
- Resources: TStringList;
- begin
- inherited;
- FreeOnTerminate:= True;
- Resources:= TStringList.Create();
- try
- PlaySound('SOUND', hInstance, SND_RESOURCE or SND_SYNC);
- finally
- Resources.Free();
- end;
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- TSpeakThread.Create(false);
- end;
-
- end.
-
 |
Вопрос задала: Ket (статус: Посетитель)
Вопрос отправлен: 19 января 2010, 17:30
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Очень смахивает на мой код из модуля uThreads.pas, ну да ладно.
Зачем тебе там Resources: TStringList? Тупо скопипастила, не зная, что за код? Айяйяй...
Чтобы остановить воспроизведение, нужно вызывать PlaySound(nil, hInstance, 0) из другого потока (можно из главного).
Чтобы проиграть следующий файл, нужно создать аналогичный поток с другим именем ресурса.
Если требуется проигрывать несколько звуков из ресурсов один за одним, воспользуйся классом TThreadQueue из моего модуля uThreads.pas, либо циклом по списку в одном потоке (это как раз Resources: TStringList).
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 19 января 2010, 18:43
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 19 января 2010, 19:18; участников в обсуждении: 2.
|
Ket (статус: Посетитель), 19 января 2010, 19:08 [#1]:
А можно примерчик?
|
|
min@y™ (статус: Доктор наук), 19 января 2010, 19:18 [#2]:
Цитата (Ket):
А можно примерчик?
Зачем? Я и так всё разжевал.
Готового примера у меня нет.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
4 июля 2012, 13:12: Статус вопроса изменён на решённый (изменил модератор DNK)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|