I think the solution is here:
http://www.spotlight.de/zforen/dlp/m/dlp-1204925621-1167.htmlThe code is reproduced here for reference
Type
TWndProc = Windows.WNDPROC;
Var
OldWnd: TWndProc = nil;
function StandByNotify(Hnd: HWnd; Msg: UInt; WParam: Windows.WParam; LParam: Windows.LParam): LResult; stdcall;
begin
showmessage('StandByNotify');
result := Windows.CallWindowProc(OldWnd,Hnd,Msg,WParam,LParam);
end;
constructor TPlayer.Create(AOwner: TWinControl);
begin
...
if not assigned(OldWnd) then begin
OldWnd := TWndProc(Windows.GetWindowLong(Application.MainForm.Handle,GWL_WNDPROC));
Windows.SetWindowLong(Application.MainForm.Handle,GWL_WNDPROC,LongInt(@StandByNotify)); // hier entsteht der Fehler
end;
...
end;
destructor TPlayer.Destroy;
begin
if Assigned(OldWnd) then
Windows.SetWindowLong(Application.MainForm.Handle,GWL_WNDPROC,LongInt(OldWnd));
OldWnd := nil;
...
end;
Das verursacht eien Fehler ('External: SIGSEGV') in
function TWinControl.HandleAllocated : Boolean;
begin
HandleAllocated := (FHandle <> 0);
end;
Thanks to the author