一个小小的网站登录工具

还记得自己上高中的时候用过Delphi7,那是对于写个代码相当迷糊,记得自己做的好滑稽的一件事情就是写的那个把html网页格式的小说提取出来转换为txt格式的小软件,当时起的名字叫html2txt,现在感觉也是比较时尚简约的,当时自己刚刚把PASCAL折腾的了解了,对Delphi是丈二的和尚,什么都不懂,只是知道这个可以用PASCAL来做可视化编程,当时,迷迷糊糊的把程序的小框框给画出来了,可里面的程序不会写了,用PASCAL那个DOS下的编译器通过了,复制过来怎么修改都不行,后来要上交作品了,竟然想出调用DOS命令加dos下执行PASCAL编译过的exe文件这样的奇思妙想,想想也挺好玩的,记得当时好多的处理步骤都是批处理完成的,还是小鱼同学帮忙写的,结果每个文件转换的太慢,循环的又太快,每次转换都要落下很多,呵呵,为此又加了若干空循环来延时,后来我的机器没问题了,跑到别人机器又有文件没有了,其实想想也是,每个机子的速度不一样,怎么能保证不落下文件。仍然记得当时不管用谁的机器调试,必然保证CPU 100%的壮举。(*^__^*) 嘻嘻……

后来就是高考,失败,伤心,大学,无聊,上了大一就开了C语言的课程,后来又学了C++,折腾回来折腾过去什么也不知道了,暑假又看了点Java,结果现在只会用javac调试,java运行。。。。。前两天闲的没事,突然发现自己还有一本Delphi的书,就想找个Delphi看看,结果发现Delphi竟然出新版了,很是激动,查了查资料,Delphi2010已经是Delphi新出的第二版了,感觉真不错, 马上下载,从安装,到更新,折腾了有半天,就

写了题目里面的一个小程序,为了自己查成绩方便,本来想直接从服务器上抓取暑假在软件里面显示,后来想想也够折腾的,对jsp也什么不懂,干脆直接做个登陆器就可以了,于是就有了这个软件。

很久不用Delphi,也不了解jsp,Pascal也忘得差不多了,写这个东西好多都来自于网络和自己的理解,现在整理出来,如果有需要程序源码的朋友,欢迎E-mail我,我会尽快给你发过去。

第一个部分是 本地保存用户信息的加密

因为有个记住密码功能,肯定要在用户电脑上保存上一次的登陆信息,信息不可能直接摆在那个地方,因此就用到了加密,本来想选个算法写个加密程序,可必然得是可逆加密,后来想到了BASE64加密,这个加密方式在网络上用到的比较多,想Flashget,迅雷,QQ旋风的专用链用的都是BASE64加密,而这个加密对于本地保存来说也足够用了,本来打算根据算法写,后来查了查,DELPHI里有现成的函数

USES EncdDecd

function EncodeString(const Input: string): string; // 编码

function DecodeString(const Input: string): string; // 解码

直接使用就可以,不用多说。

第二个部分就是关于程序打开指定网页的部分

用户输入信息,将信息作为参数打开网页,就可以实现登陆,这一部分就不多说,这里用的到的也是Delphi的现成函数。

USES ShellAPI;

用默认浏览器打开

ShellExecute(Handle, ‘open’, ‘Explorer.exe’, ‘www.happyhls.org’, nil, SW_SHOWNORMAL);

指定浏览器打开:

用IE打开

ShellExecute(Handle, ‘open’, ‘IExplore.EXE’, ‘www.happyhls.org’, nil, SW_SHOWNORMAL);

用火狐打开

ShellExecute(Handle, ‘open’, ‘firefox.exe’, ‘www.happyhls.org’, nil, SW_SHOWNORMAL);

程序没什么技术含量,写了仅仅是为了方便自己,仅供参考。代码显示的不好,见谅。

exe下载

http://www.happyhls.org/blog/wp-content/uploads/2010/08/教务登陆.zip


// A small program designed by happyhls

// welcome visit my site

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Shellapi, ShlObj,EncdDecd;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

CheckBox1: TCheckBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Label4: TLabel;

Label5: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Label4Click(Sender: TObject);

var

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

f: textfile;

num, ReadKey: string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var

flag: integer;

address,Key: String;

pidl: pItemIDList;

buffer: array [0 .. 255] of char;

//strlen: integer;

i: integer;

begin

{ 我的文档位置 }

SHGetSpecialFolderLocation(application.Handle, 5, pidl);

SHGetPathFromIDList(pidl, buffer); // 转换成文件系统的路径

address := strpas(buffer);

address := address + '\qdujw.ini'; //保存路径

assignfile(f, address);

if FileExists(address) then

begin

reset(f);

{以上部分关联文件}

readln(f, flag);

readln(f, num);

Edit1.Text := num;

readln(f, ReadKey);

if flag = 1 then

begin

{base64 解密函数}

Key:=DecodeString(ReadKey);

CheckBox1.Checked := true;

Edit2.Text := Key;

end

else

CheckBox1.Checked := false;

closefile(f);

end;

end;

procedure TForm1.Label4Click(Sender: TObject);

begin

ShellExecute(0,'open','www.happyhls.org',nil,nil,SW_SHOWNORMAL);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

url,Key,address: string;

i: integer;

pidl: pItemIDList;

buffer: array [0 .. 255] of char;

begin

{ 我的文档位置 }

SHGetSpecialFolderLocation(application.Handle, 5, pidl);

SHGetPathFromIDList(pidl, buffer); // 转换成文件系统的路径

address := strpas(buffer);

address := address + '\qdujw.ini';

assignfile(f,address);

rewrite(f);

num := Edit1.Text;

ReadKey := Edit2.Text;

{ 加密 }

Key:=EncodeString(ReadKey);

{ 是否输出密码到文件冲 }

if (CheckBox1.Checked = true) then

begin

writeln(f,1); { f=1 代表 保存密码 }

writeln(f,num);

writeln(f,Key);

end

else

begin

writeln(f,0);

writeln(f,num);

writeln(f,'No passwordsaved');

end;

closefile(f);

url := '';

if RadioButton1.Checked then

begin

url :=URL表达式,带参数。

end

else

begin

url :=URL表达式,带参数。

end;

ShellExecute(Handle, 'open', Pwidechar(url), nil, nil, SW_SHOWNORMAL);

close;

end;

{ 退出按钮 }

procedure TForm1.Button2Click(Sender: TObject);

begin

close;

end;

end.

About: happyhls


2 thoughts on “一个小小的网站登录工具”

    1. 我也忘得差不多了,看看就想起来了,对了LINUX下也有的PASCAL的IDE,以FREE PASCAL为基础的,你可以查一下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注