批处理 API实现文件下载的代码第1/2页

作者:ZV(ZVROP)
目录:
一.写在前面的话
二.故事的起因
三.解决-腹稿
四.解决-实战
五.解决-打造
六.包装
七.小节
八.后记
九,参考文献

正文开始:

一.写在前面的话
这篇文档讲述的并不是什么新鲜的技术,我只是起到将他们混和起来实现了自己需要的功能的作用,如果你对批处理和PE格式相当了解,那我的这篇文档就权且当作浏览温习吧...^_^...
另外,由于我本人废话比较多,这也是不想给杂志写稿子的主要原因,给我干瘪瘪的3000字能讲出什么来,不如这样没有限制的爽快(当然也没什么报酬...一_一..),所以也为了防止你在看文章的途中睡着,请自备小锥子一把.....
最后,这篇文档说是用批处理下载文件,其实它包含了很多方面的知识,如果有时间,不妨一看哈,^_^,开始买瓜了..

二.故事的起因

最初萌发这个想法的是不久前,在论坛(广告一下http://www.s8s8.net)上的UNIX SHELL板块有个会员发了一篇帖子,内容是用BASH SHELL写的一个成批下载图片的脚本(其实是H图片...一_一..),接下来跟贴那个多啊...,有繁衍出PHP的,VBS的,C的,C#的,JAVA的,甚至交流到多线程,断点续传....引用花大哥的一句话"无语,为了MM照片,大家的动力都很足啊!"...汗~~..

在发了一份PHP和C的代码后(感觉我动力特足~大色狼...一_一..),觉得很简单(因为用C或者PHP等脚本来实现文件的下载本来就是很基础的东西)我就开始想用微软最原始的脚本--Batch(批处理)来尝试实现(本文标题中的"闲来无事"就是纪念此处,一_一.),这似乎有点不可思议,因为批处理几乎没有实现的支持网络的功能(当然,如果你说你能用TELNET下载到文件的我是很佩服的..一_一..),但也不是完全没有办法,毕竟WINDOWS里面能用的东西这么多,没有完不成的事情....在这种挑战的勾引下,我完成了用批处理下载文件的功能....现在让我一步一步回放我的思路,揭开用批处理下载文件的奥秘...

三.解决-腹稿

如果用批处理来下载文件的话,肯定会马上想到Cscript脚本(或者是JAVA脚本),那是当然,太多的批处理脚本实现一些本身并不可能实现的功能的时候都是采用ECHO出一个其他脚本的方法来解决.可是我们的目的就在于用批处理实现下载的功能,如果要用VBS来帮忙的话不如直接写VBS了.这个想法顺即告吹....

再来,记得以前有流行过一阵用RUNDLL32来加载DLL中的API,似乎和我们需要的目的沾边,因为下载文件能用的API太多了,如果RUNDLL能调用,那最好不过了.于是我打开MSDN,找了一个API: URLDownloadToFile

URLDownloadToFile函数原型:

代码

HRESULT URLDownloadToFile(
LPUNKNOWN pCaller,
LPCTSTR szURL,
LPCTSTR szFileName,
DWORD dwReserved,
LPBINDSTATUSCALLBACK lpfnCB
);

URLDownloadToFile函数的一些信息:

引用

Header Urlmon.h
Import library Urlmon.lib
Minimum availability Internet Explorer 3.0
Minimum operating systems Windows NT 4.0, Windows 95

当前1/2页 12下一页阅读全文

(0)

相关推荐

  • 批处理 API实现文件下载的代码第1/2页

    作者:ZV(ZVROP) 目录: 一.写在前面的话 二.故事的起因 三.解决-腹稿 四.解决-实战 五.解决-打造 六.包装 七.小节 八.后记 九,参考文献 正文开始: 一.写在前面的话 这篇文档讲述的并不是什么新鲜的技术,我只是起到将他们混和起来实现了自己需要的功能的作用,如果你对批处理和PE格式相当了解,那我的这篇文档就权且当作浏览温习吧...^_^... 另外,由于我本人废话比较多,这也是不想给杂志写稿子的主要原因,给我干瘪瘪的3000字能讲出什么来,不如这样没有限制的爽快(当然也没什么

  • 用批处理解决数学问题的代码第1/4页

    #01 ! 求水仙花数? #02 ! 有四个数,其中任意三个数相加,所得的和分别是84,88,99,110,求这四个数? #03 ! 赵姑娘的岁数有以下特点: 1. 它的3次方是一个四位数,而4次方是一个六位数; 2. 这四位数和六位数正好是0到9这十个数字组成. 问,这个数应该是什么数? #04 ! 排一本辞典的页码共用了4889个数字.这本辞典共有多少页? 答案:1499 #05 ! 阿聪说他这次去西北看见一群骆驼,共有23个驼峰,60只脚.请问单.双峰骆驼各多少只? #06 ! 有一个五位

  • 让PHP更快的提供文件下载的代码

    但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让PHP来做转发, 为用户提供文件下载. 复制代码 代码如下: <?php $file = "/tmp/dummy.tar.gz"; header("Content-type: application/octet-stream"); header('Content-Disposition: attachment; filename="' . basename

  • C#文件下载实例代码(适用于各个浏览器)

    1.cs代码 public void DownFile(string filePath ,string fileName ) { // filePath 文件路径 例如:/File/记录.xlsx // fileName 文件名称 例如:记录.xlsx (要后缀哦) Encoding encoding; // 申明编码 string outputFileName; // 输出名字 Debug.Assert(HttpContext.ApplicationInstance.Request.UserA

  • 让批处理被wsh解析的代码

    示例批处理:test.bat  复制代码 代码如下: :On Error Resume Next   Sub bat   echo off & cls   echo Batching_codez_here_following_vbs_rules & pause   start wscript -e:vbs "%~f0"   Exit Sub   End Sub   MsgBox "This is vbs" 上面的代码巧妙利用 bat 和 vbs 的语

  • Lua 学习笔记之C API 遍历 Table实现代码

    Lua 通过一个虚拟栈与 C 的交互,正数索引自底向上取值,负数索引自顶向下取值. Lua 中的 Table(表)结构可以使用任何数据作为 key 进行取值.使用 C API 访问 Table 中的元素有两种方法: 复制代码 代码如下: lua_getglobal(L, t); lua_pushinteger(L, k); -- 这里可以换成其它类型的 lua_pushXXXX(L, k) 压数据到栈顶作key lua_gettable(L, -2); lua_getglobal(L, t);

  • Struts2实现文件下载功能代码分享(文件名中文转码)

    struts2文件下载功能实现代码如下所示: Action文件 public class DownLoadAction extends ActionSupport { /** * */ private static final long serialVersionUID = 5879762231742395104L; private String fileName;//用户请求的文件名 private String inputPath;//下载资源的路径(在struts配置文件中设置) publ

  • Android基于HttpUrlConnection类的文件下载实例代码

    废话不多说了,直接给大家贴代码了,具体代码如所示: /** * get方法的文件下载 * <p> * 特别说明 android中的progressBar是google唯一的做了处理的可以在子线程中更新UI的控件 * * @param path */ private void httpDown(final String path) { new Thread() { @Override public void run() { URL url; HttpURLConnection connectio

  • SpringMVC Restful api接口实现的代码

    [前言] 面向资源的 Restful 风格的 api 接口本着简洁,资源,便于扩展,便于理解等等各项优势,在如今的系统服务中越来越受欢迎. .net平台有WebAPi项目是专门用来实现Restful api的,其良好的系统封装,简洁优雅的代码实现,深受.net平台开发人员所青睐,在后台服务api接口中,已经逐步取代了辉煌一时MVC Controller,更准确地说,合适的项目使用更加合适的工具,开发效率将会更加高效. python平台有tornado框架,也是原生支持了Restful api,在

  • Python3调用微信企业号API发送文本消息代码示例

    本文主要向大家分享了Python3调用微信企业号API发送文本消息示例的有关代码,具体如下: #!/usr/bin/env python # -*- coding:utf-8 -*- import urllib.request import json import sys import logging touser = '@all' agentid = 0 corpid = 'wx5aef2da956514535' corpsecret = 'Co17m_OPlvE8Q4P2RKKwtq5oIA

随机推荐