admin管理员组

文章数量:1530339

2024年6月17日发(作者:)

维普资讯

实用第 

智慧密 

) 

} 

CView::OnR ButtonDown(nFlags,point) 

} 

} . 

CView::OnMouseMove(nFlags,point) 

} 

void CDrawBezView::OnRButtonUp(UINT nFlags,CPoint 

void CDrawBezView::OnMouseMove(UINT nFlags,CPoint 

point) 

( 

if(Index>=0&&Index<=3) 

( 

BezierPoint【Index】,X point.x: 

BezierPoint【Index】.y=point.y: 

Invalidate(): 

} 

CView::OnMouseMove(nFlags,point) 

} . 

void CDrawBezView::OnMouseMove(UINT nFlags.CPoint 

point) 

( 

jf(Index>=0&&lndex<=3) 

( 

BezierPoint【Index】.X=point.X 

BezierPoint【Index】.y=point.y 

lnvalidate(): 

霞冀骥 簸爨 魈燃嚣要黧蔓 鏊整 霆嚣羹鎏美羹羔 墨羹 

甜 澄鳓雀蠹 麓 龋酵誊翰 鬻誊誊‘尊舞0_螬篓蔓囊嚣 鹭疆 蓼》攀霪。《誊甓霉≈ 。 

^ 

 t

/ 、 

/ 

一 

^ 

/ 

■■簪t 魂 。I |… 0 i一| ■ 一筝一’’葛醺 尊 , 

墨 隧翅 夔 曼 三童爰鬟要妻 蔓 - 童二量! |l_Il 

裆渔蝴冀魏 潦 毒鹱蘸 鬃0 i √ 0蛰霉0戆尊 誊ll_0 

, 

l 

} 

l 

 I

l 

 :

、 

● 

一 

/ 

辑 -- -蠢 一一皤 一 博≯  。。 

运行效果 

86 _毫二: 技12圬与簟 j 

point) 

( 

1ndex=一1: 

CView::OnRButtonUp(nFlags point): 

} 

运行效果见左图所示: 

(作者:苏百兖) 

怎样用Delphi7实现文件粉碎 

。 当用户删除文件时,其实操作系统并未将该文件从 

存储介质上真正删除,而仅仅是在文件分配表中将该文件的相 

关信息删除,并将该文件的存储空间标记为可写,所以被删除 

的文件通常可以用一些文件恢复:I:具进行恢复。因此,涉密的 

文件必须彻底删除,否则很容易泄密。能够将用户指定的文件 

不可恢复地彻底删除的工具已经出现,比如“瑞星”开发的文 

件粉碎机和“金山”反间谍20o7——文件粉碎器。但是,从 

安全保密的角度来说,信别人不如信自己。基1二这种想法,笔 

者分析了彻底删除文件的基本原理,在此基础上用Delphi7实 

现了文件粉碎。下面阐述其设计思路、关键程序技巧。 

1 设计思路 

设计文件粉碎软件至少要考虑两个必须的功能,一是粉碎 

文件、真正删除文件的功能;二是实现用户能够很方便地操作 

调用“文件粉碎”程序的功能。因此,文件粉碎软件包括两个 

程序:一一个是实现文件粉碎的文件粉碎程序,一个是方便操作 

调用文件粉碎程序的对应注册程序。 

文件粉碎程序首先应实现文件的内容擦除,即用无意义的 

字符填充并且改写整个文件;然后删除该文件,即使用 

EasyReeovery等软件恢复,也只能恢复到最新的状态,实际 【: 

恢复的文件无任何意义,从而达到r彻底删除文件的目的。 

在Windows XP操作系统中,习惯按鼠标右键米操作文 

件。因此,在彻底删除文件的文件粉碎程序实现后,考虑到使 

用的便捷还需要将它注册到系统的有键中,用户 需在文件 : 

单击右键,就可以选择“文件粉碎”来彻底删除重要文件了。 

2.程序实现 

文件粉碎程序技巧包括:技巧一,,fj无意义的字符(比如 

本文采用的单个的字符‘Y’)填充并改写整个文件,使得要 

删除的文件在删除之前已被无意义的字符填满(比如 为 

‘Y’)。然后再删除该文件,就nr以达到彻底删除文什的目 

的。技巧二,计j Reset(UnTypedFile,1)将记录大小指定为・个 

字: , 会出现读 文件的术尾处趟}{l文件范 的情况技巧 

维普资讯

QUESTION&ANSW硼 

三,用ParamStr(1)返回第2个命令行参数,使得本程序的调 

用支持命令行参数,方便了操作。实现的核心代码如下: 

program Project1://编译后生成Project1.exe 

uses 

F0rms,SysUtils: 

{SR ,res) 

Var 

{iFileHandle:Integer; 

iFileLength:Integer; 

Buffer:PChar; 

UnTypedFile:File; 

buffer:array【0..1 28】of byte 

NumRecWritten:integer; 

begin 

Application.Initialize; 

Try//没有窗体的项目,所以主要代码放在项目文件这里 

AssignFile{UnTypedFile.ParamStr{1)): 

//Pa ramStr{1)返回第2个命令行参数 

Reset{UnTypedFile,1)://将记录大小指定为~个字节, 

//不会出现读至文件的末尾处超出文件范围的情况 

while noteof{UnTypedFile)do 

begin 

FillChar{Buffer,Sizeof{Buffer),’Y ): 

//用’Y 填充整个文件.当然换成其他字符也可 

BlockWrite{UnTypedFile,Buffer,1,NumRecWritten): 

end; 

finally 

CloseFile{UnTypedFile) 

end; 

Application Run; 

Deletefile{ParamStr{1)): //删除磁盘文件! 

end 

3.注册到右键荣 

将文件粉碎主程序注册到右键菜单的程序主要技巧是:用 

writestring将上E确的设置值写入打开的主键,command子键的 

内容是 右键后选择相应项后要运行的程序,%l是在单击 

右键时选tIJl的文什名,还要切记在interface的USES叶l加入 

registry ,否则编译时无法识别TRegistry。具休程序及关键 

注释如F: 

unit Unit1 //注册程序窗体的对应单元文件 

interface 

useS 

Windows,Messages,SysUtils,Variants.Classes,Graphics. 

Controls,FOrms, 

Dialogs,StdCtrls,Grids,registry;//TRegistry 

type 

TForm1=class{TForm) 

Button2:TButton; 

procedure Button2Click{Sender:TObject): 

private 

{Private declarations) 

public 

f Public declarations} 

end: 

Var 

F0rm1:TF0rm1: 

implementation 

{SR .dfm} 

procedure TF0rm 1 Butt0n2Click{Sender:TObject): 

Va r 

a:TRegistry; 

begin 

a:=TRegistry.create; 

a.rootkey:=HKEY一!=LASSES ROOT; 

//用openkey打开一个主键,如果此主键不存在则自动创建 

ifa openkey{ \shell\cutbig ,true)then 

begin 

a.writestring{~, 文件粉碎{&k) ): 

//用writestring将设置值写入打开的主键 

a.closekey; 

end; 

ifa openkey{ \shell\cutbig\command .true)then 

begin 

//command子键的内容是点击右键后选择相应项后要 

//运行的程序 

//%1是在单击右键时选中的文件名 

a.writestring{~, ...\Project1.exe + %1 ): 

//...处为主程序P rOject1.exe所在目录 

a.closekey; 

end; 

a.free; 

end; 

end 

注册程序运行界面如下图所示,单击安装注册后即完成文 

件粉碎主程序的注册。在资源管理器中对文件操作,按鼠标右 

键,菜单项增加了一项“文件粉碎”,用户就可以用来彻底删 

除重要文件了。 

曩‘— 难 置 量 誓西口■:I■■■_■ c疆■■ __ 

爱装 I 

i 

注册程序实现将文件粉碎主程序注册到右键菜单 

(作者:张浩廖国富) 

嘲囊 美87 

本文标签: 文件粉碎程序删除注册