岳庆生编著的“版主答疑-delphi高级编程技巧"一书,有主要程序行。
解决方案 »
- 弱弱地问一声:用Delphi2010如何开发网络数据库管理系统(B/S)
- 急!ActiveX WindowsMediaPlayer运行时调整大小的问题
- 这样的统计要如何实现??
- 请教三层结构的设计(主要是中间层设计)
- COM+服务器的发布
- 关于内存的释放问题急知
- delphi版中秋节副本贴:有多少人今天会和家人一起过中秋?有多少今天可是可女朋友在一起的?又有多少人今天是流浪在外?
- 多线程阻塞式 Socket ,服务器端如何把在某一个线程中接受到来的信息,再发送给其它线程呢?
- Win98下面有rnaui.dll,Win2000中是哪个文件???
- Office中复制的文字不能粘贴到Edit文本框里,怎么转换处理
- 我想用RegisterHotKey设置系统热键,但用THotKey控件来由用户自己定义要设置的热键,请问应该怎么办
- 烦躁?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
你可以先看看
unit frmMain;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TMainForm = class(TForm)
tmDrawRound: TTimer;
tmDrawLine: TTimer;
tmDot: TTimer;
tmTarget: TTimer;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure tmDrawRoundTimer(Sender: TObject);
procedure tmDrawLineTimer(Sender: TObject);
procedure tmDotTimer(Sender: TObject);
procedure tmTargetTimer(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
MainForm: TMainForm;
StarCount : Integer;
implementation{$R *.dfm}procedure TMainForm.FormCreate(Sender: TObject);
begin
SetWindowLong(MainForm.Handle,
GWL_STYLE,
GetWindowLong(Handle,GWL_STYLE) and not WS_CAPTION);
Height := ClientHeight;
Screen.Cursor := crNone;
StarCount := 0;
end;procedure TMainForm.tmDrawRoundTimer(Sender: TObject);
var
i : Integer;
begin
i := Screen.Width;
Randomize;
MainForm.Canvas.pen.Color := clNone;
MainForm.Canvas.Pen.Width := 0;
MainForm.Canvas.Brush.Color := random(6553600);
MainForm.Canvas.Ellipse(random(i),random(i),random(i),random(i));
end;procedure TMainForm.tmDrawLineTimer(Sender: TObject);
var
i ,z: Integer;
begin
randomize;
z := random(200);
i := random(Screen.Height) + z;
MainForm.Canvas.MoveTo(0,i);
MainForm.Canvas.Pen.Width :=1;
MainForm.Canvas.Pen.Color := clWhite;
MainForm.Canvas.LineTo(Screen.Width,i);
end;procedure TMainForm.tmDotTimer(Sender: TObject);
var
i ,j,z: Integer;
begin
randomize;
z := random(1024);
i := random(Screen.Width+z);
//randomize;
j := random(Screen.Height+z);
MainForm.Canvas.Pen.Color := clLime;
MainForm.Canvas.Pen.Width := 1;
MainForm.Canvas.Brush.Color := clLime;
MainForm.Canvas.Ellipse(i,j,i+2,j+2);
inc(StarCount);
MainForm.Label1.Caption := IntToStr(StarCount);
end;procedure TMainForm.tmTargetTimer(Sender: TObject);
var
x,y,i,j,z: Integer;begin
randomize;
X := Screen.Width div 2;
Y := Screen.Height div 2;
MainForm.Canvas.Pen.Color := clLime;
MainForm.Canvas.Brush.Color := clBlack;
MainForm.Canvas.Brush.Style := bsClear;
MainForm.Canvas.Pen.Width := 1;
randomize;
z := random(300);
i := Random(Screen.Height div 2 +z);
j := Y - X + i;
MainForm.Canvas.Ellipse(i,j,2 * X - i ,2 * Y - j);
end;procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Application.Terminate;
end;
end;end.
因为你做出来的程序不是真正WINDOWS的屏保,你不能让他显示在任务列表中,不能让人通ALT+F4退出程序
下面有两个函数,你可以参考,这只是个人观点!!!!!!!!function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external 'KERNEL32.DLL';//不要程序显示在任务列表中
RegisterServiceProcess(GetCurrentProcessID,1);//让程序不显示在任务列表中
systemParametersInfo(Spi_screensaverrunning,1,@temp,0);让功能键全失效
TMainForm = class(TForm)
tmDrawRound: TTimer;
tmDrawLine: TTimer;
tmDot: TTimer;
tmTarget: TTimer;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure tmDrawRoundTimer(Sender: TObject);
procedure tmDrawLineTimer(Sender: TObject);
procedure tmDotTimer(Sender: TObject);
procedure tmTargetTimer(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
MainForm: TMainForm;
StarCount : Integer;
implementation{$R *.dfm}procedure TMainForm.FormCreate(Sender: TObject);
begin
SetWindowLong(MainForm.Handle,
GWL_STYLE,
GetWindowLong(Handle,GWL_STYLE) and not WS_CAPTION);
Height := ClientHeight;
Screen.Cursor := crNone;
StarCount := 0;
end;procedure TMainForm.tmDrawRoundTimer(Sender: TObject);
var
i : Integer;
begin
i := Screen.Width;
Randomize;
MainForm.Canvas.pen.Color := clNone;
MainForm.Canvas.Pen.Width := 0;
MainForm.Canvas.Brush.Color := random(6553600);
MainForm.Canvas.Ellipse(random(i),random(i),random(i),random(i));
end;procedure TMainForm.tmDrawLineTimer(Sender: TObject);
var
i ,z: Integer;
begin
randomize;
z := random(200);
i := random(Screen.Height) + z;
MainForm.Canvas.MoveTo(0,i);
MainForm.Canvas.Pen.Width :=1;
MainForm.Canvas.Pen.Color := clWhite;
MainForm.Canvas.LineTo(Screen.Width,i);
end;procedure TMainForm.tmDotTimer(Sender: TObject);
var
i ,j,z: Integer;
begin
randomize;
z := random(1024);
i := random(Screen.Width+z);
//randomize;
j := random(Screen.Height+z);
MainForm.Canvas.Pen.Color := clLime;
MainForm.Canvas.Pen.Width := 1;
MainForm.Canvas.Brush.Color := clLime;
MainForm.Canvas.Ellipse(i,j,i+2,j+2);
inc(StarCount);
MainForm.Label1.Caption := IntToStr(StarCount);
end;procedure TMainForm.tmTargetTimer(Sender: TObject);
var
x,y,i,j,z: Integer;begin
randomize;
X := Screen.Width div 2;
Y := Screen.Height div 2;
MainForm.Canvas.Pen.Color := clLime;
MainForm.Canvas.Brush.Color := clBlack;
MainForm.Canvas.Brush.Style := bsClear;
MainForm.Canvas.Pen.Width := 1;
randomize;
z := random(300);
i := Random(Screen.Height div 2 +z);
j := Y - X + i;
MainForm.Canvas.Ellipse(i,j,2 * X - i ,2 * Y - j);
end;procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Application.Terminate;
end;
end;end.