Example #1
0
DWORD WINAPI CMainDlg::ScanThread(LPVOID lparam)
{
	CMainDlg *pThis = (CMainDlg *)lparam;

	// 初始化Winsock
	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
		return 0;

	pThis->sDomainArray.RemoveAll();
	//读取字典
	try
	{
		CStdioFile file;
		CString strBuffer, strTmp;
		file.Open(pThis->m_strDictionaryPath, CFile::modeRead);
		while(file.ReadString(strBuffer) > 0)
		{
			try
			{
				if(strBuffer.GetLength() > 0)
				{
					strTmp = strBuffer;
					strTmp += ".";
					strTmp += pThis->m_strDomain;
					pThis->sDomainArray.Add(strTmp);
				}
			}
			catch (...){}
		}
		file.Close();
	}
	catch (...){}

	
	if (InitializeCriticalSectionAndSpinCount(&pThis->cs, 0x80000400))
	{
		pThis->dwThreadsUsed = 0;
		pThis->startScanSubDomain(&pThis->sDomainArray);
		
		DeleteCriticalSection(&pThis->cs);
	}
	pThis->m_bScanning = FALSE;
	pThis->StatusTextOut(0, "%s", "扫描完成!");
	
	pThis->StatusTextOut(1, "");
	pThis->m_btnScan.EnableWindow(TRUE);
	pThis->SetDlgItemText(IDC_BUTTON_SCAN, "开始");
	WSACleanup();
	
	return 0;
}