Converting SWF to EXE

SWF to EXE is not a conversion, actually. The exe file (another name is Projector) consists of an executable player and SWF movie. So "converting" means merging flash movie and player into a single file. It is possible to use Macromedia Player (SAFlashPlayer.exe) as an exe-part and it does not request Flash Player have been installed before.

function SWF2Exe(SourceName, DestName, PlayerName: string): boolean;
var
 RStream, WStream: TFileStream;
 flag, SwfFileSize: DWord;
begin
 result := false;
 WStream := TFileStream.Create(DestName, fmCreate);
 try
   RStream := TFileStream.Create(PlayerName, fmOpenRead or fmShareDenyWrite);
   try
     WStream.CopyFrom(RStream, RStream.Size);
   finally
     RStream.Free;
   end;
 
   RStream := TFileStream.Create(SourceName, fmOpenRead or fmShareDenyWrite);
   try
     WStream.CopyFrom(RStream, RStream.Size);
     flag := $FA123456;
     WStream.Write(flag, 4);
     SwfFileSize := RStream.Size;
     WStream.Write(SwfFileSize, 4);
     result := true;
   finally
     RStream.Free;
   end;
 finally
   WStream.Free;
 end;
end;
 
...
Procedure TMyForm.Button1Click(Sender: TObject);
begin
 SWF2Exe('my.swf', 'my.exe', 'c:\Flash MX\Players\SAFlashPlayer.exe');
end;