高手坐镇(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像册了(如图):

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。