📄 flash.pas
字号:
unit flash;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ShockwaveFlashObjects_TLB, ComCtrls, Menus,
ExtCtrls, XPMan, ImgList, ActnList,StdCtrls,Shellapi,registry;
type
TFrmflash = class(TForm)
ImageList1: TImageList;
XPManifest1: TXPManifest;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
URL1: TMenuItem;
N31: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N28: TMenuItem;
N110: TMenuItem;
N11: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
N27: TMenuItem;
N34: TMenuItem;
N36: TMenuItem;
N1001: TMenuItem;
N45: TMenuItem;
N35: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N6: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N29: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N30: TMenuItem;
N20: TMenuItem;
N24: TMenuItem;
N32: TMenuItem;
N23: TMenuItem;
Flash1: TMenuItem;
swfexe1: TMenuItem;
N57: TMenuItem;
N7: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N8: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
Timer1: TTimer;
ImageList2: TImageList;
OpenDialog1: TOpenDialog;
PopupMenu1: TPopupMenu;
N43: TMenuItem;
URL2: TMenuItem;
N44: TMenuItem;
N111: TMenuItem;
N210: TMenuItem;
N51: TMenuItem;
N33: TMenuItem;
N41: TMenuItem;
N37: TMenuItem;
N38: TMenuItem;
N39: TMenuItem;
N40: TMenuItem;
N42: TMenuItem;
N46: TMenuItem;
N49: TMenuItem;
N50: TMenuItem;
N47: TMenuItem;
N52: TMenuItem;
N1002: TMenuItem;
N48: TMenuItem;
N53: TMenuItem;
Flash2: TMenuItem;
exeswf1: TMenuItem;
N54: TMenuItem;
N55: TMenuItem;
N56: TMenuItem;
SaveDialog1: TSaveDialog;
Timer2: TTimer;
ListView1: TListView;
ShockwaveFlash1: TShockwaveFlash;
StatusBar1: TStatusBar;
TrackBar1: TTrackBar;
PopupMenu2: TPopupMenu;
N59: TMenuItem;
N60: TMenuItem;
N61: TMenuItem;
N62: TMenuItem;
N63: TMenuItem;
N64: TMenuItem;
N65: TMenuItem;
N66: TMenuItem;
N67: TMenuItem;
procedure mymessage(var msg:Tmsg;var handled:boolean);
procedure N2Click(Sender: TObject);
procedure URL1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N28Click(Sender: TObject);
procedure N25Click(Sender: TObject);
procedure N26Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure N36Click(Sender: TObject);
procedure N1001Click(Sender: TObject);
procedure N45Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure N32Click(Sender: TObject);
procedure Flash1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N59Click(Sender: TObject);
procedure N61Click(Sender: TObject);
procedure N63Click(Sender: TObject);
procedure N65Click(Sender: TObject);
procedure N67Click(Sender: TObject);
procedure N43Click(Sender: TObject);
procedure URL2Click(Sender: TObject);
procedure N111Click(Sender: TObject);
procedure N210Click(Sender: TObject);
procedure N33Click(Sender: TObject);
procedure N41Click(Sender: TObject);
procedure N38Click(Sender: TObject);
procedure N39Click(Sender: TObject);
procedure N40Click(Sender: TObject);
procedure N49Click(Sender: TObject);
procedure N50Click(Sender: TObject);
procedure N52Click(Sender: TObject);
procedure N48Click(Sender: TObject);
procedure Flash2Click(Sender: TObject);
procedure N55Click(Sender: TObject);
procedure N56Click(Sender: TObject);
procedure N1002Click(Sender: TObject);
private
{ Private declarations }
public
procedure DragFile(var msg:Tmessage);message WM_DROPFILES;
{ Public declarations }
end;
var
Frmflash: TFrmflash;
myreg,reg:TRegistry;
a:boolean; //文件关联
k:integer; //listview1里的位序
x:tlistitem;
names:array [0..30]of string;
h:integer; //文件个数
SkipFrame:integer; //定义全局变量'SkipFrame'看是手动的还是播放动的
x1,y1:integer;//制定播放的两个点
s:string;//改标题
implementation
{$R *.dfm}
procedure TFrmflash.mymessage(var msg:tmsg;var handled:boolean);
var mouse:tpoint;
begin
if (msg.message=WM_rbuttondown) and (msg.hwnd=shockwaveflash1.Handle) then
begin
getcursorpos(mouse);
handled:=true;
popupmenu1.Popup(mouse.x,mouse.y);
end;
end;
procedure TFrmflash.N2Click(Sender: TObject);
var i:integer;
begin
listview1.Clear;
if opendialog1.Execute then
begin
for i:=0 to opendialog1.Files.Count-1 do
begin
x:=listview1.Items.Add;
names[i]:=opendialog1.files[i];
x.Caption:=ExtractFilename(opendialog1.Files.Strings[i]);
h:=i+1;
end;
k:=0;
shockwaveFlash1.Movie:=names[k];
trackbar1.Max:=shockwaveflash1.TotalFrames;
statusbar1.Panels[0].Text:='状态:正在播放....';
statusbar1.Panels[1].Text:='当前文件: '+extractfilename(names[k]);
statusbar1.Panels[2].Text:='当前帧数:'+inttostr(shockwaveflash1.FrameNum);
statusbar1.Panels[3].Text:='总帧数:'+inttostr(shockwaveflash1.TotalFrames);
timer1.Enabled:=true;
shockwaveflash1.Play;
end
else
exit;
end;
procedure TFrmflash.URL1Click(Sender: TObject);
var
f:string;
begin
f:=inputbox('打开URL','URL','http://');
if (f='http://') then
begin
statusbar1.Panels[0].Text:='Flashplayer';
end
else
try
statusbar1.Panels[0].Text:='状态:正在播放....';
statusbar1.Panels[1].Text:=f;
shockwaveflash1.Movie:=f;
shockwaveflash1.Play;
except
showmessage('不是有效的URL地址');
end;
end;
procedure TFrmflash.N3Click(Sender: TObject);
begin
timer1.Enabled:=false;
shockwaveflash1.Stop;
shockwaveflash1.Movie:='fengjun.swf';
statusbar1.Panels[0].Text:='状态:文件关闭....';
statusbar1.Panels[1].Text:='当前文件: ';
statusbar1.Panels[2].Text:='当前帧数:-1';
statusbar1.Panels[3].Text:='总帧数:-1';
end;
procedure TFrmflash.N4Click(Sender: TObject);
begin
timer1.Enabled:=false;
close;
end;
procedure TFrmflash.DragFile(var msg:Tmessage);
var p:array[0..255] of char;
j:integer;
aa:boolean;
begin
dragqueryfile(msg.WParam,0,p,255);
for j:=0 to 30 do
begin
if names[j]=p then
begin
aa:=false; break;
end
else aa:=true;
end;
if (extractfileext(p)='.swf') then
begin
if aa=true then
begin
x:=listview1.Items.Add;
names[h]:=p;
x.Caption:=extractfilename(p);
h:=h+1;
if k=0 then
shockwaveflash1.Movie:=names[0];
trackbar1.Max:=shockwaveflash1.TotalFrames;
timer1.Enabled:=true;
shockwaveflash1.Play;
end
else
exit;
end
else
begin
showmessage('对不起,FlashPlayer不能播放此类文件');
end;
end;
procedure TFrmflash.FormCreate(Sender: TObject);
var
t:array[0..80]of char;
begin
shockwaveflash1.Quality:=3;
n59.Bitmap:=n2.Bitmap;
n63.Bitmap:=n18.Bitmap;
n65.Bitmap:=n19.Bitmap;
s:=extractfilepath(application.ExeName)+'set.ini';
GetPrivateProfileString('section','key1',nil,t,80,pansichar(s));
if t<>'' then
Frmflash.Caption:='FlashPlayer-'+t+'专用版';
savedialog1.Title:='保存图象';
screen.HintFont.Color:=clpurple;
n21.Checked:=true;
n21.ImageIndex:=0;
n22.Checked:=true;
n22.ImageIndex:=0;
n43.Bitmap := n2.Bitmap;
URL2.Bitmap:= URL1.Bitmap;
n111.Bitmap:= n12.Bitmap;
n210.Bitmap:= n13.Bitmap;
n39.Bitmap := n10.Bitmap;
n40.Bitmap := n28.Bitmap;
n52.Bitmap := n36.Bitmap;
DragAcceptFiles(Frmflash.Handle,true);
application.OnMessage:=mymessage;
//xpmenu1.Active:=true;
if Paramstr(1)<>'' then
begin
k:=0;
shockwaveflash1.Movie:=Paramstr(1);
shockwaveflash1.Play;
//edit1.Text:=Paramstr(1);
// names[0]:=edit1.Text;
listview1.Items.Add;
listview1.Items[0].Caption:= ExtractFilename(Paramstr(1));
timer1.Enabled:=true;
trackbar1.Max:=shockwaveflash1.TotalFrames;
statusbar1.Panels[0].Text:='状态:正在播放....';
statusbar1.Panels[1].Text:='当前文件: '+extractfilename(Paramstr(1));
statusbar1.Panels[2].Text:='当前帧数:'+inttostr(shockwaveflash1.FrameNum);
statusbar1.Panels[3].Text:='总帧数:'+inttostr(shockwaveflash1.TotalFrames);
h:=1;
end
else begin
statusbar1.Panels[0].Text:='FlashPlayer播放器';
statusbar1.Panels[3].Text:='Made By: 江智勇';
end;
reg:=TRegistry.create;
reg.RootKey:=HKEY_CLASSES_ROOT;
with reg do
begin
reg.OpenKey('\.swf\shell\open',false);
if reg.readstring('')='用FlashPlayer播放' then
begin
a:=true;
flash1.Checked:=true;
flash2.Checked:=true;
reg.Free;
end
else
begin
a:=false;
flash1.Checked:=false;
flash1.Checked:=false;
reg.Free;
end;
end;
end;
procedure TFrmflash.FormResize(Sender: TObject);
begin
ActiveControl:= nil;
ActiveControl:= ShockwaveFlash1;
statusbar1.Panels[1].Width:=statusbar1.Width-statusbar1.Panels[0].Width-statusbar1.Panels[2].Width-statusbar1.Panels[3].Width;
end;
procedure TFrmflash.N9Click(Sender: TObject);
begin
if listview1.Visible=true then
N21.Click;
n21.Enabled:=false;//不用n21
self.WindowState:=wsMaximized;
frmflash.BorderStyle:=bsnone;
end;
procedure TFrmflash.N10Click(Sender: TObject);
var i:integer;
begin
n21.Enabled:=true;//用n21
for i:=1 to 3 do //这两句,我也不想加。
n21.Click; //但只有这样才能运行正常。唉!
self.WindowState:= wsNormal;
frmflash.Width:=572;
frmflash.Height:=394;
frmflash.BorderStyle:=bssizeable;
end;
procedure TFrmflash.N28Click(Sender: TObject);
begin
if n28.Checked=false then
begin
n28.Checked:=true;
n40.Checked:=true;
setwindowpos(frmflash.Handle,HWND_TOPMOST,frmflash.Left,frmflash.Top,frmflash.Width,frmflash.Height,0);
end
else
begin
n28.Checked:=false;
n40.Checked:=false;
setwindowpos(frmflash.Handle,HWND_NOTOPMOST,frmflash.Left,frmflash.Top,frmflash.Width,frmflash.Height,0);
end;
end;
procedure TFrmflash.N25Click(Sender: TObject);
begin
n25.imageindex:= 0;
n26.imageindex:=-1;
n27.imageindex:=-1;
shockwaveflash1.Quality:=3;
n49.ImageIndex:=0;
n50.ImageIndex:=-1;
end;
procedure TFrmflash.N26Click(Sender: TObject);
begin
n25.imageindex:=-1;
n26.imageindex:=0;
shockwaveflash1.Quality:=1;
end;
procedure TFrmflash.N27Click(Sender: TObject);
begin
n25.imageindex:=-1;
n26.imageindex:=-1;
n27.imageindex:=0;
shockwaveflash1.Quality:=0;
n49.ImageIndex:=-1;
n50.ImageIndex:=0;
end;
procedure TFrmflash.N36Click(Sender: TObject);
begin
n36.imageindex:=0;
n1001.imageindex:=-1;
shockwaveflash1.ScaleMode:=1;
n52.ImageIndex:=0;
n1002.ImageIndex:=-1;
end;
procedure TFrmflash.N1001Click(Sender: TObject);
begin
n36.imageindex:=-1;
n1001.imageindex:=0;
shockwaveflash1.ScaleMode:=3;
n52.ImageIndex:=-1;
n1002.ImageIndex:=0;
end;
procedure TFrmflash.N45Click(Sender: TObject);
begin
if n45.Checked=false then
begin
shockwaveflash1.Loop:=true;
n45.ImageIndex:=0;
n45.Checked:=true;
n48.ImageIndex:=0;
n48.Checked:=true
end
else
begin
shockwaveflash1.Loop:=false;
n45.ImageIndex:=-1;
n45.Checked:=false;
n48.ImageIndex:=-1;
n48.Checked:=false;
end;
end;
procedure TFrmflash.N21Click(Sender: TObject);
begin
if n21.Checked=false then
begin
n21.ImageIndex:=0;
n21.Checked:=true;
listview1.Visible:=true;
frmflash.Width:=frmflash.Width+listview1.Width;
end
else
begin
n21.ImageIndex:=-1;
listview1.Visible:=false;
n21.Checked:=false;
frmflash.Width:=frmflash.Width-listview1.Width;
end;
end;
procedure TFrmflash.N22Click(Sender: TObject);
begin
if n22.Checked=false then
begin
n22.ImageIndex:=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -