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

📄 page1.cpp

📁 FTP探索工具源代码,内涵测试以及详细说明。
💻 CPP
字号:
// Page1.cpp : implementation file
//

#include "stdafx.h"
#include "Page.h"
#include "Page1.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

UINT SearchFunction(LPVOID lparam);
UINT AutoSearchThread(LPVOID lparam);



/////////////////////////////////////////////////////////////////////////////
// CPage1 property page

IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)

CPage1::CPage1() : CPropertyPage(CPage1::IDD)
{
	//{{AFX_DATA_INIT(CPage1)
	m_nThread = 10;
	m_bAutoStart =(::GetPrivateProfileInt("Settings","bAutoStart",0,".\\Settings.ini")==0 ?false:true);
	//}}AFX_DATA_INIT
	m_i=0;
	m_bNo10=false;
}

CPage1::~CPage1()
{
}

void CPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage1)
	DDX_Control(pDX, IDC_ANIMATE1, m_avi);
	DDX_Control(pDX, IDC_IPADDRESS3_temp, m_tempIP);
	DDX_Control(pDX, IDC_PROGRESS1, m_pp);
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Control(pDX, IDC_IPADDRESS2, m_EndIP);
	DDX_Control(pDX, IDC_IPADDRESS1, m_StartIP);
	DDX_Text(pDX, IDC_N_THREAD, m_nThread);
	DDV_MinMaxInt(pDX, m_nThread, 1, 255);
	DDX_Check(pDX, IDC_CHECK1, m_bAutoStart);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
//{{AFX_MSG_MAP(CPage1)
ON_WM_LBUTTONDOWN()
ON_BN_CLICKED(IDC_START_SEARCH, OnStartSearch)
ON_WM_CTLCOLOR()
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_NOTIFY(LVN_KEYDOWN, IDC_LIST1, OnKeydownList1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage1 message handlers

void CPage1::OnLButtonDown(UINT nFlags, CPoint point) 
{
	AfxGetMainWnd()->SendMessage(WM_NCLBUTTONDOWN,HTCAPTION,0);	
	CPropertyPage::OnLButtonDown(nFlags, point);
}


HBRUSH CPage1::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
	
	
	if(pWnd->GetDlgCtrlID()==IDC_STATE)
		pDC->SetTextColor(RGB(0,128,192));

	
	return hbr;
}
void CPage1::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)  //双击开始测试
{
	AfxBeginThread(SearchFunction,this);
	
	*pResult = 0;
}

void CPage1::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)   //单击
{
	int nIndex = m_list.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED); 
    if(nIndex == -1)
        return ;              //获得所选择的项目

	TCHAR buf[200],buf2[200];
	m_list.GetItemText(nIndex,3,buf,200);  //获得选项的名称(FTP地址)
  	m_list.GetItemText(nIndex,1,buf2,200);  //获得选项的名称(FTP地址)
  	lstrcat(buf2,_T(" 状态:")); 
	lstrcat(buf2,buf); 
	this->SetDlgItemText(IDC_STATE,buf2);
	
	*pResult = 0;
}

void CPage1::OnBrowse()    //浏览FTP
{ 
	int nIndex = m_list.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED); 
    if(nIndex == -1)
        return ;              //获得所选择的项目

	char buf[200];
	m_list.GetItemText(nIndex,1,buf,200);  //获得选项的名称(FTP地址)


	CString str;
	str.Format("ftp://%s",buf);

	::ShellExecute(NULL,"open",str,NULL,NULL,SW_SHOW);
	
}
void CPage1::OnCheck1() 
{

	UpdateData(true);
	::WritePrivateProfileString("Settings","bAutoStart",m_bAutoStart? "1":"0",".\\Settings.ini");
}

void CPage1::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
	int nIndex = m_list.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED); 
    if(nIndex == -1)
        return ;              //获得所选择的项目

	char buf[200],buf2[20];
	m_list.GetItemText(nIndex,3,buf,200);  //获得选项的名称(FTP地址)
	m_list.GetItemText(nIndex,1,buf2,200);  //获得选项的名称(FTP地址)
	strcat(buf2," 状态:");
	strcat(buf2,buf);

	this->SetDlgItemText(IDC_STATE,buf2);	
	*pResult = 0;
}


BOOL CPage1::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	m_list.SetExtendedStyle(LVS_EX_ONECLICKACTIVATE|LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
	m_list.InsertColumn(0,"序号",LVCFMT_LEFT,60);
	m_list.InsertColumn(1,"地址",LVCFMT_CENTER,128);
	m_list.InsertColumn(2,"结果",LVCFMT_CENTER,80);
	m_list.InsertColumn(3,"状态",LVCFMT_CENTER,300);

	
	m_StartIP.SetWindowText("192.168.52.1");
	m_EndIP.SetWindowText("192.168.52.244");
	
	m_font.CreateFont(20, 0,0,0,FW_NORMAL, 0,0,0,
		DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "黑体");
    GetDlgItem(IDC_STATE)->SetFont(&m_font);
	SetDlgItemText(IDC_STATE," 欢迎使用");

	m_font2.CreateFont(14, 0,0,0,FW_NORMAL, 0,0,0,
		DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋体");
    GetDlgItem(IDC_LIST1)->SetFont(&m_font2);

		
	m_avi.ModifyStyle(0,ACS_TRANSPARENT);
	m_avi.Open(IDR_AVI1);


	

	return TRUE; 
}

void CPage1::OnStartSearch()     //开始
{

	m_avi.Play(0,-1,100);

	UpdateData();
	m_i=0;	
	m_nCur=0;   //当前正在测试的那个
	
	SetDlgItemText(IDC_STATE,"开始搜索了...");

	m_list.DeleteAllItems();	
	CString str,strI;	
	DWORD addr1,addr2;              //初始化列表框显示
	m_StartIP.GetAddress(addr1);
	m_EndIP.GetAddress(addr2);		
	for(;addr1 <= addr2; addr1++)
	{
		m_tempIP.SetAddress(addr1);
		m_tempIP.GetWindowText(str);		
		strI.Format("%d",m_i);   
		m_i++;
		m_list.InsertItem(0,strI);
		m_list.SetItemText(0,1,str);
	}
	m_pp.SetRange(1,m_list.GetItemCount());
	m_pp.SetPos(1);

	if(this->m_bAutoStart)
	{
	   if(m_list.GetItemCount() <= this->m_nThread)
	   {
		   for(int ij=0;ij<m_list.GetItemCount();ij++)
				AfxBeginThread(AutoSearchThread,this);
	   }
	   else
	   {
		   for(int ii=0; ii< this->m_nThread;ii++)
			   AfxBeginThread(AutoSearchThread,this);		  
	   }

	}

}
/*==================线程函数=自动搜索============================================*/
UINT AutoSearchThread(LPVOID lparam)
{
	CPage1* pPage1=(CPage1*)lparam;	

	int nCur=pPage1->m_nCur; 
	pPage1->m_nCur++;           //用于指示
	if(nCur > pPage1->m_list.GetItemCount())
		pPage1->m_avi.Stop();

	pPage1->m_list.SetItemText(nCur,3,"正在搜索和验证...");

	char buf[200];
	pPage1->m_list.GetItemText(nCur,1,buf,200);  //获得选项的名称(FTP地址)

	
	CInternetSession session;	
	CFtpConnection* pconn=NULL;
	try
	{
		pconn=session.GetFtpConnection(buf);
	}
	catch(CInternetException* pex)
	{
		pconn=NULL;
		pex->GetErrorMessage(buf,200);
		pPage1->m_list.SetItemText(nCur,2,"Error");
		pPage1->m_list.SetItemText(nCur,3,buf);
		pex->Delete();		
	}
	if(pconn !=NULL)
	{
		pPage1->m_list.SetItemText(nCur,2,"OK");
		pPage1->m_list.SetItemText(nCur,3,"已经验证通过");
		pconn->Close();
		delete pconn;
	} 
	pPage1->m_pp.SetPos(pPage1->m_pp.GetPos()+1);

	if(nCur< pPage1->m_list.GetItemCount())  //如果还每没有完,另开一个线程
		AutoSearchThread(lparam);

	return 0;
}



/*==================线程函数1====手动搜索=========================================*/

UINT SearchFunction(LPVOID lparam)
{
	CPage1* pPage1=(CPage1*)lparam;	

	int nIndex = pPage1->m_list.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED); 
    if(nIndex == -1)
        return 0;              //获得所选择的项目

	pPage1->m_list.SetItemText(nIndex,3,"正在搜索和验证...");

	char buf[200];
	pPage1->m_list.GetItemText(nIndex,1,buf,200);  //获得选项的名称(FTP地址)
	
	CInternetSession session;	
	CFtpConnection* pconn=NULL;
	try
	{
		pPage1->SetDlgItemText(IDC_STATE,buf);
		pconn=session.GetFtpConnection(buf);
	}
	catch(CInternetException* pex)
	{
		pconn=NULL;
		pex->GetErrorMessage(buf,200);
		pPage1->m_list.SetItemText(nIndex,2,"Error");
		pPage1->m_list.SetItemText(nIndex,3,buf);
		pex->Delete();		
	}
	if(pconn !=NULL)
	{
		pPage1->m_list.SetItemText(nIndex,2,"OK");
		pPage1->m_list.SetItemText(nIndex,3,"已经验证通过");
		pconn->Close();
		delete pconn;
	} 		
	return 0;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -