高手坐镇(29)

编程学堂

VB设计定时关机功能

题目难度:★★★

读者求助: 我想要一个定时关机程序,程序要有两个附加功能:关机提醒功能、倒计时功能。我在一本书上看到这道题,很感兴趣,但自己编了半天都没有弄出程序,只好来找你们了,相信你们几分钟就可以搞定这个程序!

程序员 赵哥:几分钟?嘿嘿,用批处理差不多。不过这个程序也比较简单,就是计算时间并激活程序关闭系统。关键代码如下(完整代码下载地址:http://www.icpcw.com/bzsoft):

Private Sub Combo1_click()

Combo1.BackColor = &H800000

Combo1.ForeColor = &HFFFFFF

Select Case Combo1.ListIndex

Case 0

Label2.Caption = "结束会话,关闭Windows,以便安全关闭电源。"

Case 1

Label2.Caption = "结束会话,关闭Windows,然后重新启动。"

Case 2

Label2.Caption = "结束会话,用户重新登录。"

End Select

End Sub

If Check1.Value = 0 And Check2.Value = 0 Then

str = MsgBox("你还有设置漏选!" 48, "错误")

End If

End If

n = Val(Text1.Text) * 3600 + Val(Text2.Text) * 60 + Val(Text3.Text)

If Check2.Value = 1 Then

If Text1.Text = "" Then

Text1.Text = "0"

End If

If Text2.Text = "" Then

Text2.Text = "0"

End If

If Text3.Text = "" Then

Text3.Text = "0"

End If

End If

If Check1.Value = 1 Then

If Val(Text3.Text) > 60 Or Val(Text2.Text) > 60 Then

MsgBox "填入的数据错误,要重填!" 48, "错误"

n = 0

Exit Sub

End If

If Text1.Text <> "0" And Text2.Text = "0" Then

Text2.Text = "60"

End If

If Text2.Text <> "0" And Text3.Text = "0" Then

Text3.Text = "60"

End If

End If

Timer1.Enabled = True

End If

End Sub

Private Sub Command2_Click()

Dim str As String

If Combo1.Text = "" Then

str = MsgBox("请选择操作类型!" 0, "错误")

Exit Sub

End If

Frame1.Visible = True

Command2.Enabled = False

End Sub

Private Sub Command5_Click()

If Timer1.Enabled = True Then

Timer1.Enabled = False

End If

Text1.Text = 0

Text2.Text = 0

Text3.Text = 0

End Sub

Private Sub Form_Load()

Frame1.Visible = False

Label2.Caption = ""

Combo1.AddItem "关机"

Combo1.AddItem "重新启动"

Combo1.AddItem "注销"

counter = 0

Timer1.Enabled = False

End Sub

C++ 创建数字签名

题目难度:★★★★★

读者求助:本人在学习C++。前几日,电脑中毒了,病毒使用了某家公司的数字签名,我对这个很感兴趣。我想知道如何创建数字签名?

程序员 故乡的云:数字签名是一种安全防护手段,通过它我们可以知道网络中传输的数据是否已被他人窜改了。它的工作原理也很简单,通过复杂的算法,生成特殊的数据。数字签名种类很复杂,我给你一份有代表性且简单的代码,你研究一下吧,关键代码如下(完整代码下载地址:http://www.icpcw.com/bzsoft):

// 一个文件流

if(!CryptAcquireContext(&hProv,NULL,NULL,PROV—RSA—FULL,0))

// 连接默认的CSP,接受它的句柄放入hProv

{

// 错误处理

}

if(!CryptCreateHash(hProv,CALG—MD5,0,0,&hHash))

// 创建一个散列对象,得到它的句柄放入hHash

{

// 错误处理

}

do

{

dReadLen=sourceFile-Read(pBuffer,BUFFER);

if(!CryptHashData(hHash,pBuffer,dReadLen,0))

// 根据文件的内容计算散列值

{

// 错误处理

}

}while(!(dReadLen

if(!CryptSignHash(hHash,AT—SIGNATURE,NULL,0,pSignature,&dSignatureLen))

//使用私人密钥对散列值进行数字签名

//签名数据放入pSignature,长度放入dSignatureLen

// 错误处理

//对文件的数据签名进行检验

// 上一段得到的签名的缓冲区

DWORD dSignatureLen;

// 上一段得到的签名的长度

if(!CryptAcquireContext(&hProv,NULL,NULL,PROV—RSA—FULL,0))

// 连接默认的CSP,接受它的句柄放入hProv

{

// 错误处理

}

if(!CryptGetUserKey(hProv,AT_SIGNATURE,&hPublicKey); // 得到公共密钥的句柄

{

// 错误处理

}

if(!CryptCreateHash(hProv,CALG—MD5,0,0,&hHash)) // 创建一个散列对象,得到它的句柄放入hHash

{

// 错误处理

}

do

{

dReadLen=sourceFile-Read(pBuffer,BUFFER);

if(!CryptHashData(hHash,pBuffer,dReadLen,0))

// 根据文件的内容计算散列值

{

// 错误处理

}

}while(!(dReadLen

if(!CryptVerifySignature(hHash,pSignature,dSignatureLen,hPublicKey,NULL,0))

{

if(GetLastError()==NTE—BAD—SIGNATURE) ShowMessage(″文件已被修改″);

Flash制作个性化像册

题目难度:★★★

读者求助: 上个月我去海南旅游,拍了很多照片。回来后,我想把所有照片做成一个Flash像册,但不知道具体的思路,特来求助,谢谢啦!

Flash专家 王金红:这个操作不难,我具体给你展示一下制作的流程吧。打开Flash 8,将素材图片导入库中。新建影片剪辑元件“素材图片组”,在图层1中,将1~13帧转换为关键帧,然后将图片t1~t13分别拖入元件编辑区中形成逐帧动画。

新建影片剪辑元件“长方形”,在编辑区域中绘制图形,可以是长方形、多边形、五角星等。回到主场景,将图层1命名为“图片”,将“素材图片组”拖入舞台中央合适位置,名称为“sc”,然后新建一个名为“长方形”的图层,再将对应的影片剪辑拖入舞台,命名为“tp13”。再新建Action图层,在Flash界面下侧,打开“动作”面板,输入代码即可:

function into(){

for(i=1;i<14;i++){

this["tp"+i]._x=105+i*25;

}

}

function alpha(obj){

onEnterFrame=function(){

obj._alpha+=(0-obj._alpha)*0.5;

if(obj._alpha<5){

_root.mc.gotoAndStop(_root.num);

obj._alpha=100;

delete onEnterFrame;

}

}

}

into();

for(i=1;i<14;i++){

this["tp"+i].num=i;

this["tp"+i].onRollOver=function(){

this.gotoAndStop(2);

}

this["tp"+i].onRollOut=function(){

this.gotoAndStop(1);

}

this["tp"+i].onRelease=function(){

_root.num=this.num;

alpha(sc)

}

最后,单击“文件→导出→导出影片”,就可以看到Flash像册了(如图):

29-f12-1.jpg

C语言 推荐编程网站

题目难度:★

读者求助:编辑大大,推荐几个学习C语言的网站,最好是你平时去看了哪些网站,辛苦啦!

编辑 陈邓新:小编平时看的网站可杂了,不知道适不适合你。这样吧,我给你推荐几个不错的C语言编程网站:编程中国(http://www.bccn.net)、编程爱好者网站(http://www.programfan.com)、VC知识库(http://www.vckbase.com)、programming in C(http://www.cs.cf.ac.uk)。

VF 如何自学VF

题目难度:★★

读者求助:我不想浪费暑假,想提前学习一下VF,但是我不知道从何入手,希望高手给我出出主意。此外,请高手给我介绍一些相关书籍和网站。谢谢!

编辑 陈邓新:相对VC而言,VF要简单一些,重点掌握结构的修改、字段有效性、建立主索引、SQL语言(重点)、表单、报表等。小编建议你,去图书馆借VF的教科书和参考书即可——只要是入门的就行。至于网站,小编推荐http://www.ncre2vf.com。