SetTimer geht bei mir nicht, da ich ja die WM_TIMER nicht bekomme....
Habe jetzt noch ein Problem!
Der Timer wird nun ausgelöst, aber wenn ich die Form einmal gezeigt hatte mit ShowModal dann gibt es den Error: 5 ' Zugriff verweigert' wenn ich ein FreeAndNil(frMain) mache:
Delphi-Quellcode:
procedure TmyThread.Terminate;
begin
inherited Terminate;
PostMessage(FHWND, WM_QUIT , 0,0);
end;
procedure TmyThread.Execute;
var msg:Tmsg;
begin
try
//plugin gets loaded, create Form
if Not Assigned(frMain) then
frMain := TfrMain.Create(NIL);
frMain.AddLog('plugin got init');
finally
//todo
end;
FHWND:=allocatehwnd(WndProc); //hier ist jetzt dein Windowhandle für MMAudio
try
//[weitere Initialisierungen]
while getMessage(msg,0,0,0) do //warten auf Message
DispatchMessage(msg); //verteilen auf das entsprechende Fenster (gibt hier allerdings eh nur eins)
finally
if Assigned(frMain) then
FreeAndNil(frMain);
Deallocatehwnd(FHWND);
end;
end;
procedure TmyThread.wndProc(var Msg:TMessage);
begin
Dispatch(msg); //verteilen auf die Methoden mit der entsprechenden Message -->MMInDone
end;
Callstack:
Zitat:
:75e69617 KERNELBASE.RaiseException + 0x54
:0046a4ed RaiseLastOSError + $75
:0046a476 RaiseLastOSError + $A
:004ec618 TCustomForm.DestroyWindowHandle + $38
:00454fc3 TObject.Free + $B
:00454fc3 TObject.Free + $B
:0048fb85 ThreadProc + $45
:0045626e ThreadWrapper + $2A
:772a1174 kernel32.BaseThreadInitThunk + 0x12
:77bcb3f5 ntdll.RtlInitializeExceptionChain + 0x63
:77bcb3c8 ntdll.RtlInitializeExceptionChain + 0x36