"Brian Andersen (
www.europeansoftwarehouse.com)" <x@x.x> skrev i en
meddelelse news:HyiDf.5744$Cl2.134062@news000.worldonline.dk...
> Jeg vil tro, at problemet med din tråd skyldes, at den ikke er noget
> message
> loop. Dette skal til for at Windows Media Playeren kan modtage Messages
> fra Windows. Prøv at implementere din Threads Execure methode som
> nedenstående. Dog har jeg sat et par kommentarer i din Execute methode.
>
<klip en stak kode>
jo musikken starter men tråden kommer aldrig længere end til:
while GetMessage(Msg, 0, 0, 0) do
hvordan får jeg tråden afsluttet, normalt bruger jeg bare Terminate i hoved
tråden men det virker ikke her?
Jeg fand ud af i går at dette også virker fint:
while not terminated do
begin
Application.ProcessMessages;
Sleep(200);
end;
men det er nok ikke den helt rigtige måde at gøre det på, jeg har så lige
lavet dette som også virker fint, jeg kan terminate og jeg kan modtage
beskeder fra min hoved tråd som jeg sender med PostThreadMessage.
procedure TWMPThread.Execute;
var
Msg: TMsg;
begin
try
FWMP.controls.play;
while not terminated do
begin
MessageLoop;
Sleep(100);
end;
except
on E: Exception do
raise; {Implementer eventuelt noget error handling}
end;
end;
min MessageLoop ser således ud:
procedure TWMPThread.MessageLoop;
var
Msg : TMsg;
begin
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
begin
if Msg.message=WM_ThreadMessage then
begin
if Msg.wParam=1 then
beep;// Synchronize(HentModulListe);
if Msg.wParam=2 then
beep;// ModtagCmdFraMain:=true;
end;
end;
end;
WM_ThreadMessage er sat til WM_User+1; jeg bruger så en værdi i wParam til
at fortælle tråden hvad den skal foretage sig, f.eks. mute media playeren
osv.
Men du har vel nogle bemærkninger til det
/HK