📄 page1.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 + -