问个问题:如何把swf资源从RES中取出来 并在sockwaveflash控件中进行播放 我定义一个资源文件 .rcMySwf RC_DATA "c:\123.swf" 再用brcc32编译生成.res文件但是怎么样才能在FORM窗体下用sockwaveflash控件播放这个文件呢要写什么代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure TForm1.Button1Click(Sender: TObject);var res:tresourcestream; strFileName:String;begin //用土办法,直接将资源另存为本地文件,然后播放它 res:=tresourcestream.create(hinstance,'MySwf','RC_DATA'); strFileName:=ExtractFilePath(Application.ExeName) + 'MySwf.swf'; res.SaveToFile(strFileName); res.Free; // //播放,(此前要安装shockwave的ocx播放器组件),然后将播放控件加入窗口中 shockwaveFlash1.LoadMovie(0,strFileName); shockwaveFlash1.play;end; unit uFlashRes;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, ShockwaveFlashObjects_TLB, Menus;type TFlashResFrm = class(TForm) ShockwaveFlash1: TShockwaveFlash; PlayResFileBtn: TButton; RightPM: TPopupMenu; N1: TMenuItem; N2: TMenuItem; procedure PlayResFileBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } { 自定义鼠标右键弹出消息 } procedure MouseRightMessage(var Msg: TMsg; var Handled: Boolean); { 防止对话框ALT+F4关闭 } procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; public { Public declarations } end;var FlashResFrm: TFlashResFrm;implementation{$R *.dfm}{$R SwfFile.RES} //引用资源文件procedure TFlashResFrm.MouseRightMessage(var Msg: TMsg; var Handled: Boolean);begin if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = ShockwaveFlash1.Handle) then begin Handled := True; RightPM.Popup(Mouse.CursorPos.X,Mouse.CursorPos.y); end;end;procedure FlashResToFile(const ResName, ResType, FileName: string);var FlashRes: TResourceStream;begin FlashRes := TResourceStream.Create(HInstance, ResName, PChar(ResType)); try FlashRes.SaveToFile(FileName); //将资源保存为文件,即还原文件 finally FlashRes.Free; end;end;procedure TFlashResFrm.PlayResFileBtnClick(Sender: TObject);begin if FileExists(ExtractFilePath(ParamStr(0)) + 'Thanks.SWF') then DeleteFile(ExtractFilePath(ParamStr(0)) + 'Thanks.SWF'); FlashResToFile('FLASH', 'SwfFile1', 'Thanks.SWF'); ShockwaveFlash1.Movie := ExtractFilePath(ParamStr(0)) + 'Thanks.SWF'; ShockwaveFlash1.Play;end;procedure TFlashResFrm.FormCreate(Sender: TObject);begin Application.OnMessage:= MouseRightMessage; SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);end;procedure TFlashResFrm.N1Click(Sender: TObject);begin Application.MessageBox('Flash资源文件的应用', '信息提示', MB_OK)end;procedure TFlashResFrm.N2Click(Sender: TObject);begin if Application.MessageBox('确定要退出当前程序吗?','信息提示',MB_OKCANCEL+MB_ICONQUESTION) = IDOK then begin Close; end else Exit;end;procedure TFlashResFrm.FormDestroy(Sender: TObject);begin ShockwaveFlash1.FreeOnRelease; FlashResFrm := nil;end;procedure TFlashResFrm.FormClose(Sender: TObject; var Action: TCloseAction);begin Action := caFree;end;procedure TFlashResFrm.WMSysCommand(var Msg: TWMSysCommand);begin if Msg.CmdType <> SC_CLOSE then inheritedend;end. SwfFile.rc文件内容如下.Flash SwfFile1 Thanks.SWF批处理文件BRCC32 SwfFile.rc 请教线程方面的问题??? 动态菜单显示图标的问题 求解,网络语音聊天 福建莆田 如何在Delphi中实现单文档窗口 怎么得到当前被点击的columns的caption 数据库文件打包问题 虚心求教(请不要删除,谢谢) ADOStrocedProc控件是怎么用 请问一个关于类的问题? 如果实现在工具栏中的闪烁提示 如何用编程的方法在实现在屏幕上截取局部图像?
var res:tresourcestream;
strFileName:String;
begin
//用土办法,直接将资源另存为本地文件,然后播放它
res:=tresourcestream.create(hinstance,'MySwf','RC_DATA');
strFileName:=ExtractFilePath(Application.ExeName) + 'MySwf.swf';
res.SaveToFile(strFileName);
res.Free;
//
//播放,(此前要安装shockwave的ocx播放器组件),然后将播放控件加入窗口中
shockwaveFlash1.LoadMovie(0,strFileName);
shockwaveFlash1.play;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, ShockwaveFlashObjects_TLB, Menus;type
TFlashResFrm = class(TForm)
ShockwaveFlash1: TShockwaveFlash;
PlayResFileBtn: TButton;
RightPM: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure PlayResFileBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
{ 自定义鼠标右键弹出消息 }
procedure MouseRightMessage(var Msg: TMsg; var Handled: Boolean);
{ 防止对话框ALT+F4关闭 }
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;var
FlashResFrm: TFlashResFrm;implementation{$R *.dfm}
{$R SwfFile.RES} //引用资源文件procedure TFlashResFrm.MouseRightMessage(var Msg: TMsg;
var Handled: Boolean);
begin
if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = ShockwaveFlash1.Handle) then
begin
Handled := True;
RightPM.Popup(Mouse.CursorPos.X,Mouse.CursorPos.y);
end;
end;procedure FlashResToFile(const ResName, ResType, FileName: string);
var
FlashRes: TResourceStream;
begin
FlashRes := TResourceStream.Create(HInstance, ResName, PChar(ResType));
try
FlashRes.SaveToFile(FileName); //将资源保存为文件,即还原文件
finally
FlashRes.Free;
end;
end;procedure TFlashResFrm.PlayResFileBtnClick(Sender: TObject);
begin
if FileExists(ExtractFilePath(ParamStr(0)) + 'Thanks.SWF') then
DeleteFile(ExtractFilePath(ParamStr(0)) + 'Thanks.SWF');
FlashResToFile('FLASH', 'SwfFile1', 'Thanks.SWF');
ShockwaveFlash1.Movie := ExtractFilePath(ParamStr(0)) + 'Thanks.SWF';
ShockwaveFlash1.Play;
end;procedure TFlashResFrm.FormCreate(Sender: TObject);
begin
Application.OnMessage:= MouseRightMessage;
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;procedure TFlashResFrm.N1Click(Sender: TObject);
begin
Application.MessageBox('Flash资源文件的应用', '信息提示', MB_OK)
end;procedure TFlashResFrm.N2Click(Sender: TObject);
begin
if Application.MessageBox('确定要退出当前程序吗?','信息提示',MB_OKCANCEL+MB_ICONQUESTION) = IDOK then
begin
Close;
end
else
Exit;
end;procedure TFlashResFrm.FormDestroy(Sender: TObject);
begin
ShockwaveFlash1.FreeOnRelease;
FlashResFrm := nil;
end;procedure TFlashResFrm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;procedure TFlashResFrm.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType <> SC_CLOSE then
inherited
end;end.
Flash SwfFile1 Thanks.SWF
批处理文件
BRCC32 SwfFile.rc