用Delphi怎样实现如下功能:(100个大洋)(100分)

  • 主题发起人 主题发起人 jita
  • 开始时间 开始时间
J

jita

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi怎样实现如下功能:在Win98下打开某一应用程序时,必须输入正确的<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;密码才能打开,密码可更改。100个大洋敬请高手<br> &nbsp; &nbsp; &nbsp; &nbsp;解答,谢谢!!![:)]
 
不太明白,不过我觉得在主界面出来之前加个登录对话框就行了,至于密码的存放位置<br>你可以根据用户的电脑水平来决定,比如注册表、某一个文件等等
 
在dpr文件中加一点内容,源程序:<br>http://wolfsoft.nugoo.com/srcdetail.asp?flag=2&amp;id=2
 
只有正确登陆后才让修改口令就是了,就是一般的登陆呀,没什么特殊的
 
用注册表给应用程序加口令<br><br><br><br>设计流程为:先判断是否为第一次使用,如果为第一次使用,则要求设置新的用户名和口令,系统将用户名和口令保存起来;如果不是第一次使用,则要求输入用户名和口令才能登录。<br><br>   在Delphi开发环境中,新建一个工程Project1,在Project1中增加一个窗体Form1;在Form1上增加两个按纽,一个为确定,另一个为取消;再在Form1上增加两个Text框EditUser和EditPass,分别为用户名和口令输入框。定义窗体级全局变量RegF:TRegistry。并在interface的Uses中加上Registry。<br><br>  增加函数Wsz_IfFirst,判断是否是第一次使用;增加过程Wsz_SaveUse,保存用户名和口令;增加函数Wsz_CheckUser,判断用户名和口令是否正确。然后在Form1的FormShow事件和确定按纽事件中分别调用这三个函数和过程,达到设计要求。<br><br>//判断是否是第一次使用<br><br>function Wsz_IfFirst:Boolean;<br>var<br>sUser:string;<br>sPass:string;<br>begin<br>result := false;<br>RegF:=TRegistry.Create;<br>RegF.RootKey :=HKEY_LOCAL_MACHINE;<br>RegF.OpenKey("SOFTWARE/MicroSoft/whh726",TRUE);<br>sUser := RegF.ReadString("user");<br>sPass := RegF.ReadString("pass");<br>if ((length(sUser)$#@60;=0) and (length(sPass)$#@60;=0)) then<br>result := true ;<br>RegF.Free;<br>end;<br><br>//判断用户名和口令是否正确<br>function Wsz_CheckUser(MyUser:string;MyPass :string):Boolean;<br>var<br>sUser:string;<br>sPass:string;<br>begin<br>result:= false;<br>RegF:=TRegistry.Create;<br>RegF.RootKey :=HKEY_LOCAL_MACHINE;<br>RegF.OpenKey("SOFTWARE/MicroSoft/whh726",TRUE);<br>sUser := RegF.ReadString("user");<br>sPass := RegF.ReadString("pass");<br>if (sUser=MyUser) and (sPass=MyPass) then<br>result := true;<br>RegF ee;<br>end;<br><br>//保存用户名和口令<br>procedure Wsz_SaveUser(MyUser:string;MyPass :string);<br>begin<br>RegF:=TRegistry.Create;<br>RegF.RootKey :=HKEY_LOCAL_MACHINE;<br>RegF.OpenKey("SOFTWARE/MicroSoft/whh726",TRUE);<br>RegF.WriteString("user",MyUser);<br>RegF.WriteString("pass",MyPass);<br>RegF.Free;<br>end;<br><br>//取消按纽事件<br>procedure TWszLoginForm.BitBtnCloseClick(Sender: TObject);<br>begin<br>Close;<br>end;<br><br>//确定按纽事件<br>procedure TWszLoginForm.BitBtnYesClick(Sender: TObject);<br>var<br>suser:string;<br>spass:string;<br>begin<br>suser := trim(edituser.text);<br>spass := trim(editpass.text);<br>if (length(suser)$#@60;=0) or (length(spass)$#@60;=0) then<br>begin<br>Application.MessageBox("用户名和口令都必须输入!", "系统提示",<br>MB_OK + MB_ICONINFORMATION);<br>edituser.SetFocus ;<br>exit;<br>end;<br>if Wsz_IfFirst then<br>begin<br><br>//处理第一次登录的用户名和口令<br>if Application.MessageBox(<br>"您是第一次使用本软件,请记住您的用户名和口令,以便下次登录。现在进入系统吗?",<br>"系统提示",<br>MB_OKCANCEL + MB_ICONQUESTION) = IDOK then<br>begin<br><br>//保存<br>Wsz_SaveUser(suser,spass);<br>end<br>else<br>begin<br>edituser.SetFocus ;<br>exit;<br>end;<br>end else<br>begin<br>if not Wsz_CheckUser(suser,spass) then<br>begin<br>Application.MessageBox("对不起,用户名和口令输入不正确!",<br>"系统提示",<br>MB_OK + MB_ICONINFORMATION);<br>edituser.setfocus ;<br>exit;<br>end;<br>end;<br><br>//全局变量<br>GB_Wsz_User := suser;<br>GB_Wsz_PASS := spass;<br>Close;<br>end;<br><br>//窗体的Show事件<br>procedure TWszLoginForm.FormShow(Sender: TObject);<br>begin<br>if Wsz_IfFirst then<br>begin<br>Application.MessageBox(<br>"您是第一次使用本软件,您可以随便输入用户名和口令。",<br>"系统提示",<br>MB_OK + MB_ICONINFORMATION);<br>end;<br>end;<br>
 
请到http://www.hensel-hk.com/yyh/index.asp之原创软件栏目内下载一个叫展采文件<br>锁的工具,可以实现你的要求。
 
你的“某一运用程序”是指所有的任何程序,还是你自己写的一运用程序?
 
这些方法实在太土了,给个提示你:dos程序带参怎么运行的?
 
fssky问的也是我想问的
 
跟踪程序的密码框和“登录”按钮的 Handle.<br>通过 postmessage 填入密码并进行“登录”按钮的点击。
 
我想不会这么复杂吧?<br>就是比如:打开IE前要输入正确密码才能打开,否则不允许打开<br>敬请高手解答,谢谢!!!
 
做个登录FORM,核对加密数据文件的密码,正确后创建主窗体,执行相应命令<br>密码加密/解密有很多算法,如XOR等<br>保存到数据文件的应是加密后的
 
写一个外壳程序,生成临时执行程序,运行之。<br>真正的执行程序是作为外壳程序的资源,在资源中你可加入密码。位置可由你自己定。<br>可以写出更为复杂的密码生成函数来生成密码。
 
不是写外壳吧,那不是病毒啦??
 
我记得以前陈经韬有一边文章是关于stream的<br>上面有一个实例就是使用stream来给exe文件加密<br>你找找看
 
加一个密码的对话框完全可以满足你的需求,除非你是技术狂!:)
 
后退
顶部