Witam. Posiadam problem z funkcją SNDPlaySound. Problem polega na tym, że czasem się ta funkcja mi nie działa, w szczególności po jakimś tam upływie czasu działania mojego programu. Kiedy powinna reagować to nie reaguje.
Do wykorzystania tej procedury mam kilka wątków (każdy inaczej nazwany).
To jest przykład jednego z nich:
unit Unit12;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Tlhelp32, StdCtrls, PsAPI, Vcl.Samples.Spin, Vcl.ExtCtrls, Math,
Vcl.Menus, MMSystem;
type
TPosAlarm = class(TThread)
private
protected
procedure Execute; override;
end;
var
PosAlarm:TPosAlarm;
implementation
uses Unit1;
procedure TPosAlarm.Execute;
begin
FreeOnTerminate := true;
while not self.terminated do
begin
SNDPlaySound('PosAlarm.wav', SND_FILENAME OR SND_ASYNC);
sleep(1500);
end;
end;
Initialization
PosAlarm := TPosAlarm.Create(True);
end.
Oczywiście w moim głównym programie mam przygotowany warunek kiedy wywołać funkcję, a więc jest to np. timer z takim czymś:
if form1.label1.caption = 'xoxoxoxo' then begin PosAlarm.Resume.
Nie wiem jak rozwiązać problem, więc piszę tutaj. Myślałem nad zastosowaniem SNDPlaySound w głównym programie, a nie w jego wątku, ale wtedy podczas działania tej funkcji cały program się zacina.
Proszę o pomoc.