关于屏幕保护程序(50分)

  • 主题发起人 主题发起人 TIMDONG
  • 开始时间 开始时间
T

TIMDONG

Unregistered / Unconfirmed
GUEST, unregistred user!
今天写了一个最简单的屏幕保护,遇到了几个问题,向大家请教(检索以往问题没有得到
满意答案)

1.屏保预览的实现;
2.设置为所写屏保后,设置屏保密码无效;
3.图片百叶窗、马赛克等显示效果怎样实现(TGraphic读取图片->TImage显示图片)。

多谢!
 
这是我做过的屏保的“小窗口预览”的一小段
if (paramstr(1)='/p') then //小窗口预览
begin
preview:=true;
form1.Hide ;
form1.ParentWindow:=strtoint(paramstr(2));
getwindowrect(strtoint(paramstr(2)),p);
flash.top:=0;
flash.left:=0;
flash.width:=p.right-p.left;
flash.height:=p.Bottom-p.top;
form1.visible:=true;
flash.visible:=true;
我的屏保没出现设置密码无效的情况
 
马赛克效果可以用TCanvas的CopyRect方法
首先载入源图片然后分割成一块一块
再用CopyRect输出到目标上
百叶窗效果可以用BitMap的ScanLine
具体辕马我下次贴上来
 
TO xiao_min:
我的程序设置为当前屏保后单击“设置密码”按钮无效.

TO pcexplorer:
贴上来我就分分了!
 
设置密码?我的只有“密码保护”的选项呀
 
Sorry,俺说错了,是选定密码保护选项,单击“更改”按钮没有反应。
 
呵呵,我一向是在2000下用的,没这个选项,在98中才有,我的也是点了没反应,
应该也是有一个参数传入,然后要自己编程来设定的吧。。。
 
98下可以这样设密码:

param:=copy(uppercase(paramstr(1)),1,2);
if param='/A' then
begin
osversion.dwOSVersionInfoSize :=sizeof(osversion);
GetVersionex(osversion);
if osversion.dwPlatformId =VER_PLATFORM_WIN32_WINDOWS then
begin
setlength(dirsys,MAX_PATH);
lenth:=GetSystemDirectory(PChar(dirsys),MAX_PATH);
setlength(dirsys,lenth);
if (length(dirsys)>0) and (dirsys[length(dirsys)]<>'/') then
dirsys:=dirsys+'/';
halib:=loadlibrary(PChar(dirsys+'mpr.dll'));
if halib=0 then
showmessage('系统库调入失败!')
else
begin
try
pchange:=Getprocaddress(halib,'PwdChangePasswordA');
param:=paramstr(2);
if param<>'' then
phandle:=strtoint(param)
else
phandle:=application.handle;
pchange('SCRSAVE',phandle,nil,nil);
finally
freelibrary(halib);
end;
end;
end;
end
 
/p:小窗口预览
/c:屏保设置
/s:屏保运行
/a:密码设置
 
后退
顶部