今天发现了两个比较有用的小工具,与大家分享下:
一.wget.exe:
我们都知道,在Linux下想从网上下载一个资源,只要敲下命令wget URL既可下载,那么windows下是否有这个工具呢,搜了下还真有现成的,其实原理也很简单,向目标URL发送一个http request,这些已经有很多api可以使用,可以这样实现:
#include <afx.h>
#include <afxinet.h>
#define RECVPACK_SIZE 2048
bool wgetFile(char* url,char *strSaveFile) {
bool ret=false;
CInternetSession Sess("lpload");
Sess.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT , 1000); //1秒的连接超时
Sess.SetOption(INTERNET_OPTION_SEND_TIMEOUT , 1000); //1秒的发送超时
Sess.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT , 1000); //1秒的接收超时
Sess.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT , 1000); //1秒的发送超时
Sess.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 1000); //1秒的接收超时
DWORD dwFlag = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD ;
CHttpFile* cFile = NULL;
char *pBuf = NULL;
int nBufLen = 0 ;
do {
try{
cFile = (CHttpFile*)Sess.OpenURL(url,1,dwFlag);
DWORD dwStatusCode;
cFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode == HTTP_STATUS_OK) {
//查询文件长度
DWORD nLen=0;
cFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, nLen);
//CString strFilename = GetFileName(url,TRUE);
nBufLen=nLen;
if (nLen <= 0) break;//
//分配接收数据缓存
pBuf = (char*)malloc(nLen+8);
ZeroMemory(pBuf,nLen+8);
char *p=pBuf;
while (nLen>0) {
//每次下载8K
int n = cFile->Read(p,(nLen<RECVPACK_SIZE)?nLen:RECVPACK_SIZE);
//接收完成退出循环
if (n <= 0) break;//
//接收缓存后移
p+= n ;
//剩余长度递减
nLen -= n ;
}
//如果未接收完中断退出
if (nLen != 0) break;
//接收成功保存到文件
CFile file(strSaveFile, CFile::modeCreate | CFile::modeWrite);
file.Write(pBuf,nBufLen);
file.Close();
ret = true;
}
} catch(...) {
break;//
}
} while(0);
//释放缓存
if (pBuf) {
free(pBuf);
pBuf=NULL;
nBufLen = 0 ;
}
//关闭下载连接
if (cFile) {
cFile->Close();
Sess.Close();
delete cFile;
}
return ret;
}
int main() {
DownloadSaveFiles("http://www.nirsoft.net/utils/nircmd.zip","e:\\my_nircmd.zip");
return 0;
}
工具链接:http://download.youkuaiyun.com/detail/longlong530/5799337 (这个工具并不是上面代码编译出来的)
NirCmd是一款命令行使用小工具,通过它可以完成很多实用的任务,而不用显示任何用户界面。通过添加一些非常简单的命令选项,可以完成:写入、删除 注册表项、值,写入ini文件,拨号连接到的网络账户以及VPN网络,重启、关闭计算机,创建文件快捷方式,改变文件的创建/修改日期,改变显示设置, 关闭显示器,弹出光驱,以及更多….
使用起来非常简便,可以作为一些平台软件的小插件工具使用,节省一些系统功能的开发工作。
设置为最高音量 nircmd.exe setsysvolume 65535
设置为静音 nircmd.exe mutesysvolume 1
取消静音 nircmd.exe mutesysvolume 0
在静音与正常状态之间切换 nircmd.exe mutesysvolume 2
在桌面创建静音与正常状态切换命令的快捷方式 nircmd.exe cmdshortcut "~$folder.desktop$" "Switch Volume" mutesysvolume 2
关闭显示器 nircmd.exe monitor off
启动默认屏保 nircmd.exe screensaver
进入待机状态 nircmd.exe standby
注销当前用户 nircmd.exe exitwin logoff
关闭计算机 nircmd.exe exitwin poweroff
关闭computers.txt中指定的所有计算机 multiremote copy "c:tempcomputers.txt" exitwin poweroff force
拨号宽带连接 nircmd.exe rasdial "My Internet"
断开宽带连接 nircmd.exe rashangup "My Internet"
设置IE窗口为75%透明度(192/256) nircmd.exe win trans ititle "internet explorer" 192
最小化所有的IE窗口 nircmd.exe win min class "IEFrame"
等等等等等等等等等等等等等等等等等等等等等等等等等等等
工具下载链接:http://www.nirsoft.net/utils/nircmd.zip
使用说明:http://wenku.baidu.com/view/469f8154ad02de80d4d840dc.html