亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mainfrm.cpp

?? 一個類似爬行的程序,用于了一些數學方法,能用的,也不錯的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//
/****************************************************************
Pre-emptive Multithreading Web Spider
Copyright (c) 1998 by Sim Ayers.
**************************************************************/

#include "stdafx.h"
#include "Spider.h"
#include "ThreadParams.h"
#include "Thread.h"

#include "MainFrm.h"
#include "SpiderDoc.h"
#include "SpiderView.h"
#include "SpiderList.h"
#include "utily.h"
#include "UrlDlg.h"

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

HANDLE hConnection;
long lThreadCount = 0;
long lURLCount = 0;
int  nCurrentlThreadCount = 0;


/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_WINDOWS_CLOSEALL, OnWindowsCloseall)
	ON_WM_CLOSE()
	ON_COMMAND(ID_TOOLS_GETURL, OnToolsGetURL)
	ON_COMMAND(ID_TOOLS_KILLTHREAD, OnToolsKillthread)
	ON_WM_DESTROY()
	ON_COMMAND(ID_TOOL_BROKENURLS, OnToolCheckURLs)
	ON_COMMAND(ID_TOOLS_GETHEADER, OnToolsGetServerHeader)
	ON_COMMAND(ID_TOOLS_LIST, OnToolsViewURLList)
	ON_COMMAND(ID_TOOLS_NOT_FOUND, OnToolsURLsNotFound)
	ON_COMMAND(ID_TOOLS_STOP, OnToolsThreadsStop)
	ON_COMMAND(ID_WINDOWS_CLOSEALL, OnWindowsCloseall)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_KILLTHREAD, OnUpdateToolsKillthread)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_STOP, OnUpdateToolsThreadsStop)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_USER_THREAD_FILE,OnDocNew)
	ON_MESSAGE(WM_USER_THREAD_PRINT,OnDocUpdate)
	ON_MESSAGE(WM_USER_THREAD_DONE,OnThreadDone)
	ON_MESSAGE(WM_USER_THREAD_STATUS,OnThreadStatus)
	ON_MESSAGE(WM_USER_THREAD_GETSTATUS,OnNewThread)
	ON_MESSAGE(WM_USER_THREAD_GETNEWFILE,OnGetNewFiles)
	ON_MESSAGE(WM_USER_SERVER_STATUS,OnServerStatus)
	ON_MESSAGE(WM_USER_URL_STATUS,OnURLStatus)


END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
    m_lCurThreads = 0;
	m_lMaxThreads = MAXIMUM_WAIT_OBJECTS;  //64
	hConnection = CreateSemaphore( NULL,m_lCurThreads,m_lMaxThreads,NULL);
	InitializeCriticalSection(&m_CritSect);

}

CMainFrame::~CMainFrame()
{
	int nRemoveEntry = 0;
	while (g_nEntries > 0)
	{
		delete g_entry[nRemoveEntry];
		g_nEntries--;
		nRemoveEntry++;
	}
	g_nEntries = 0;
	g_entry.RemoveAll();
	CloseHandle(hConnection);
	DeleteCriticalSection(&m_CritSect);

}



int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.Create(this) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

    static UINT nIndicators[] = {
        ID_SEPARATOR,
        ID_SEPARATOR,
    };

    if (!m_wndStatusBar.Create (this))
        return -1;

    m_wndStatusBar.SetIndicators (nIndicators, 4);

    TEXTMETRIC tm;
    CClientDC dc (this);
    CFont* pFont = m_wndStatusBar.GetFont ();
    CFont* pOldFont = dc.SelectObject (pFont);
    dc.GetTextMetrics (&tm);
    dc.SelectObject (pOldFont);

    int cxWidth;
    UINT nID, nStyle;
    m_wndStatusBar.GetPaneInfo (1, nID, nStyle, cxWidth);
    m_wndStatusBar.SetPaneInfo (1, nID, nStyle, tm.tmAveCharWidth * 40);
    m_wndStatusBar.SetPaneInfo (2, nID, nStyle, tm.tmAveCharWidth * 12);
    m_wndStatusBar.SetPaneInfo (3, nID, nStyle, tm.tmAveCharWidth * 12);

	// TODO: Remove this if you don't want tool tips or a resizeable toolbar
	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	DockControlBar(&m_wndToolBar);


	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CMDIFrameWnd::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CMDIFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CMDIFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


void CMainFrame::OnWindowsCloseall() 
{
    CWnd *activeWnd;

    // Send a Close command to every open document
    while ( (activeWnd = MDIGetActive()) != 0) {
        // has the document been modified?
        CDocument *activeDoc = ((CFrameWnd *) activeWnd)->GetActiveDocument();
    	activeDoc->SetModifiedFlag(FALSE);

        activeWnd->SendMessage(WM_COMMAND, ID_FILE_CLOSE);
    }
	
}
LRESULT CMainFrame::OnDocNew(WPARAM wParam,LPARAM lParam) 
{
	EnterCriticalSection(&m_CritSect);
	ThreadParams *lpThreadParams = NULL;
	lpThreadParams = (ThreadParams*)lParam;
	
	if(lpThreadParams != NULL)
	{

		lpThreadParams = (ThreadParams*)lParam;
		CSpiderApp *pApp = (CSpiderApp*) AfxGetApp();
		CString lpFileName = lpThreadParams->m_pszURL;
		CString urlPage= "Error in file tranfer";
		if(!lpThreadParams->m_Contents.IsEmpty())
			urlPage = lpThreadParams->m_Contents;

		pApp->ShowURL(lpFileName,urlPage); 
	}		

	LeaveCriticalSection(&m_CritSect);
		

	return 0;
}

LRESULT CMainFrame::OnThreadDone(WPARAM wParam,LPARAM lParam) 
{
	EnterCriticalSection(&m_CritSect);
	
	CString string;
	ThreadParams *lpThreadParams = NULL;
	lpThreadParams = (ThreadParams*)lParam;
	POSITION pos= NULL;

	::InterlockedDecrement(&lThreadCount);
	if(lThreadCount < 0) lThreadCount = 0;
	if(lThreadCount == 0)
	{
		string = "Ready!";
		m_wndStatusBar.SetPaneText (0, (LPCTSTR) string, TRUE);
		string = "Connection Closed";
		m_wndStatusBar.SetPaneText (1, (LPCTSTR) string, TRUE);

	}

	int nThreadsLeft = m_threadList.GetCount();

	if(lpThreadParams != NULL )
	{
		
		for(int i=0; i<nThreadsLeft; i++)
		{
			if((pos = m_threadList.FindIndex(i))!= NULL )
			{				
				CSpiderThread* pThread = m_threadList.GetAt(pos);
				if(pThread != NULL)
				{
					if(lpThreadParams->m_threadID==pThread->m_nThreadID)
					{
						//A thread object is deleted when the last handle to the thread 
						//is closed. 
						m_threadList.RemoveAt(pos);
						

					 delete  lpThreadParams;
	 				if(lThreadCount < MAXIMUM_WAIT_OBJECTS) 
						ReleaseSemaphore(hConnection,1,NULL);
					
					string.Format ("Threads:%d",lThreadCount );
					m_wndStatusBar.SetPaneText (2, (LPCSTR) string, TRUE);
				
						break;
					}
				}

			}
		}

	}

	LeaveCriticalSection(&m_CritSect);


	return 0;
}



LRESULT CMainFrame::OnDocUpdate(WPARAM wParam,LPARAM lParam) 
{
	EnterCriticalSection(&m_CritSect);

	ThreadParams *lpThreadParams = NULL;
	lpThreadParams = (ThreadParams*)lParam;
	CString string = "";

	if(lpThreadParams != NULL)
	{
			if(!lpThreadParams->m_string.IsEmpty())
				string.Format("%s",(LPCTSTR)lpThreadParams->m_string);
			LPCSTR lpstring = string;
			
			if(lpThreadParams->m_hwndNotifyView != NULL)
				::SendMessage(lpThreadParams->m_hwndNotifyView,WM_USER_CHECK_DONE, 0, (LPARAM)lpstring);
			else
			{
				CSpiderView* pActiveView = NULL;
				pActiveView = CSpiderView::GetView();
				if(pActiveView)
					pActiveView->UpdateString(string);

			}
	}
	LeaveCriticalSection(&m_CritSect);

	return 0;
}

LRESULT CMainFrame::OnThreadStatus(WPARAM wParam,LPARAM lParam) 
{
	EnterCriticalSection(&m_CritSect);

	LPCSTR prtline;;
	prtline = (LPCSTR)lParam;
    CString string;
    string.Format ("%s",prtline );
    m_wndStatusBar.SetPaneText (0, (LPCSTR) string, TRUE);
	LeaveCriticalSection(&m_CritSect);
	
	return 0;
}
LRESULT CMainFrame::OnURLStatus(WPARAM wParam,LPARAM lParam) 
{
	EnterCriticalSection(&m_CritSect);

	long nCount = lParam;
    CString string;
    string.Format ("URLs:%d",nCount );
    m_wndStatusBar.SetPaneText (3, (LPCSTR) string, TRUE);

	LeaveCriticalSection(&m_CritSect);

	return 0;
}


LRESULT CMainFrame::OnServerStatus(WPARAM wParam,LPARAM lParam) 
{
	EnterCriticalSection(&m_CritSect);

	LPCSTR prtline;;
	prtline = (LPCSTR)lParam;
    CString string;
    string.Format ("%s",prtline );
    m_wndStatusBar.SetPaneText (1, (LPCSTR) string, TRUE);
	LeaveCriticalSection(&m_CritSect);

	return 0;
}


LRESULT CMainFrame::OnNewThread(WPARAM wParam,LPARAM lParam) 
{
	EnterCriticalSection(&m_CritSect);

	ThreadParams *lpThreadParams = NULL;
	lpThreadParams = (ThreadParams*)lParam;
	UINT ntype = (UINT)wParam;
	CString pszURL = "";
	CString string;
	URLStatus lpEntry;

	if(lpThreadParams != NULL)
	{
		if(!lpThreadParams->m_checkURLName.IsEmpty())	pszURL.Format("%s",(LPCTSTR)lpThreadParams->m_checkURLName);

		BOOL Result= GetURL(pszURL,lpThreadParams->m_hwndNotifyView,(int) ntype,lpThreadParams->m_RootLinks);//	HTTP_CHECK_URL);

	   if(!Result)
	   {
		   string.Format("Error in creating NEW thread ");
			AfxMessageBox(string, MB_OK);
			
	   }
		
	}
	
	LeaveCriticalSection(&m_CritSect);

	return 0;
}

LRESULT CMainFrame::OnGetNewFiles(WPARAM wParam,LPARAM lParam) 
{
	
	EnterCriticalSection(&m_CritSect);

	LPCSTR prtline;;
	UINT type = (UINT)wParam;
	prtline = (LPCSTR)lParam;
	CString pszURL;
	pszURL.Format("%s",(LPCTSTR)prtline);
	
		BOOL Result= GetURL(pszURL,NULL,(int)type);

		   if(!Result)
		   {
			   CString str;
				str.Format("Error in creating NEW thread ");
				AfxMessageBox(str, MB_OK);
			
		   }
	
	LeaveCriticalSection(&m_CritSect);

	return 0;
}





void CMainFrame::OnClose() 
{
	CMDIFrameWnd::OnClose();
}

/******************************************
Create the Thread and process the desired URL action 
*******************************************/

BOOL CMainFrame::GetURL(LPCTSTR lpFileName,	HWND lphwndNotifyView,	
						int lptype,BOOL lpRoot)
{


	if(lpFileName == NULL) return FALSE;
	if(lptype< HTTP_GET_FILE || lptype > HTTP_GET_ENTRY) lptype = 0;

    ThreadParams* pThreadParams = new ThreadParams;
	if(!pThreadParams) return FALSE;


	pThreadParams->m_pszURL.Format("%s",lpFileName);
	pThreadParams->m_type = lptype;
	pThreadParams->m_Status = 0;
	pThreadParams->m_RootLinks = lpRoot;

	pThreadParams->m_hwndNotifyProgress = 
			AfxGetMainWnd()->m_hWnd;
	
	if(lphwndNotifyView != NULL)
	  pThreadParams->m_hwndNotifyView = lphwndNotifyView;
	else
	  pThreadParams->m_hwndNotifyView = NULL;


	CSpiderThread* pThread;
	pThread = NULL;
	pThread = new CSpiderThread(CSpiderThread::ThreadFunc,pThreadParams); // create a new CSpiderThread object

	if (pThread == NULL)
	{
		AfxMessageBox("Cannot Start New Thread");
		delete pThreadParams;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区在线视频| 久久人人超碰精品| 欧美色图免费看| 一本一道综合狠狠老| 91丨九色porny丨蝌蚪| 国产v综合v亚洲欧| 成人激情黄色小说| 波多野结衣在线aⅴ中文字幕不卡| 国产剧情在线观看一区二区| 国产精品影视在线观看| 国产福利一区二区三区视频| 国产成人啪午夜精品网站男同| 国产福利一区在线| 99精品国产热久久91蜜凸| 99久久99久久免费精品蜜臀| 色婷婷精品久久二区二区蜜臀av | 99r精品视频| jizzjizzjizz欧美| eeuss鲁片一区二区三区在线观看| jlzzjlzz亚洲日本少妇| 在线亚洲精品福利网址导航| 欧美日韩国产精品成人| 日韩免费高清av| 国产日韩精品一区二区三区 | 精品一区二区三区视频| 国产精品88888| 99久久久国产精品免费蜜臀| 欧美四级电影在线观看| 91精品国产综合久久久蜜臀粉嫩| www久久久久| 日韩理论在线观看| 偷拍亚洲欧洲综合| 国产一区二区美女诱惑| 99精品偷自拍| 91精品国产综合久久久久久漫画 | 日韩一级大片在线| 国产夜色精品一区二区av| 中文字幕制服丝袜一区二区三区| 一区二区三区**美女毛片| 五月天国产精品| 国产传媒一区在线| 在线观看欧美精品| 日韩精品一区二区三区中文精品| 国产精品你懂的在线| 亚洲福利视频导航| 国产一区二区视频在线| 91蝌蚪porny成人天涯| 91精品国产高清一区二区三区 | 在线观看免费亚洲| 欧美sm极限捆绑bd| 一区二区三区日韩| 精品一区二区国语对白| 色噜噜狠狠成人中文综合| 精品少妇一区二区三区免费观看| 国产精品白丝在线| 久久国产欧美日韩精品| 91国偷自产一区二区三区成为亚洲经典| 91麻豆精品国产91久久久资源速度| 国产精品久线观看视频| 免费观看日韩av| 色狠狠综合天天综合综合| 欧美精品一区二区三区在线| 一区二区三区在线观看网站| 国产美女久久久久| 91精品国产欧美一区二区| 亚洲色图一区二区| 国产久卡久卡久卡久卡视频精品| 欧美剧在线免费观看网站| 中文字幕亚洲欧美在线不卡| 久久99精品国产.久久久久| 在线精品视频免费播放| 日本一区二区成人| 久久成人免费日本黄色| 欧美日韩一区二区三区四区五区| 国产精品水嫩水嫩| 麻豆精品精品国产自在97香蕉| 日本韩国精品在线| 中文无字幕一区二区三区| 老司机精品视频一区二区三区| 欧美四级电影在线观看| 亚洲欧美另类图片小说| 成人免费av网站| 久久免费看少妇高潮| 免费成人av在线| 在线综合视频播放| 香蕉影视欧美成人| 欧美性做爰猛烈叫床潮| 亚洲男人电影天堂| 成人h精品动漫一区二区三区| 精品国产乱码久久| 免费高清视频精品| 91精品一区二区三区久久久久久| 午夜精品爽啪视频| 色欧美日韩亚洲| 亚洲色图欧洲色图| 成人sese在线| 国产精品美女一区二区| 成人免费的视频| 国产精品网站在线| 丁香一区二区三区| 国产日韩综合av| 久久精品一区二区三区不卡| 日本在线不卡一区| 99久久精品免费观看| 欧美国产精品久久| 成人激情电影免费在线观看| 国产精品美女久久久久久久久久久| 极品少妇xxxx偷拍精品少妇| 精品国产乱码久久久久久久 | 免费精品99久久国产综合精品| 欧美日韩久久一区| 视频在线在亚洲| 欧美一区二区人人喊爽| 日韩国产在线一| 欧美大片在线观看一区二区| 日本一区中文字幕 | 一级日本不卡的影视| 在线观看免费一区| 日韩精品一二三| 日韩精品一区二区三区视频在线观看 | thepron国产精品| 日韩伦理免费电影| 欧美自拍偷拍午夜视频| 香蕉加勒比综合久久| 日韩精品一区在线| 国产成人午夜99999| 亚洲天堂精品在线观看| 欧美吻胸吃奶大尺度电影| 奇米影视7777精品一区二区| 久久久久久免费网| aa级大片欧美| 婷婷综合久久一区二区三区| 欧美刺激脚交jootjob| 国产高清精品在线| 亚洲乱码中文字幕综合| 欧美日韩精品一区二区三区蜜桃| 久草在线在线精品观看| 国产精品美女久久久久久| 欧美性色欧美a在线播放| 蜜臀av性久久久久蜜臀av麻豆| 久久精品亚洲一区二区三区浴池| 色综合色综合色综合色综合色综合| 亚洲一级二级在线| 日韩久久久精品| 成人aaaa免费全部观看| 亚洲va天堂va国产va久| 精品国产乱码久久久久久老虎| 99综合电影在线视频| 奇米四色…亚洲| 成人免费小视频| 日韩一区二区三区在线观看| 国产ts人妖一区二区| 亚洲一区二区在线观看视频| 久久综合色天天久久综合图片| 99精品视频在线观看免费| 日本 国产 欧美色综合| 亚洲视频中文字幕| 精品美女一区二区| 在线观看免费视频综合| 国产成人午夜精品影院观看视频| 亚洲va韩国va欧美va| 中文字幕精品—区二区四季| 6080国产精品一区二区| 91亚洲精华国产精华精华液| 久久www免费人成看片高清| 亚洲免费观看高清在线观看| 久久综合五月天婷婷伊人| 欧美三级日本三级少妇99| 国产精品亚洲专一区二区三区| 夜夜嗨av一区二区三区四季av | 婷婷中文字幕综合| 中文字幕在线一区| 欧美成人精品3d动漫h| 欧美亚洲丝袜传媒另类| 成人丝袜视频网| 久久精品国产成人一区二区三区 | 日本一区二区三区视频视频| 欧美一区二区三区免费视频| 99久久99久久精品免费看蜜桃| 激情综合网av| 日韩精品三区四区| 亚洲欧美另类图片小说| 亚洲国产精品av| 久久婷婷一区二区三区| 91精品国产综合久久精品app| 91猫先生在线| yourporn久久国产精品| 国产美女在线观看一区| 蜜臀国产一区二区三区在线播放| 亚洲国产一区二区视频| 综合久久综合久久| 国产精品人妖ts系列视频| ww亚洲ww在线观看国产| 日韩三级中文字幕| 欧美日韩成人在线一区| 91亚洲国产成人精品一区二区三| 成人免费视频免费观看| 国产精品一区二区你懂的| 九九视频精品免费| 麻豆精品新av中文字幕|