亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
美女脱光内衣内裤视频久久网站 | 欧美日韩电影在线| 久久99精品国产.久久久久| 中文字幕一区二区三区在线观看 | 亚洲欧美日韩国产中文在线| 日韩欧美你懂的| 欧美午夜理伦三级在线观看| 粉嫩一区二区三区性色av| 日韩精品一级中文字幕精品视频免费观看 | 欧美日韩一区二区三区在线| 国产九色sp调教91| 欧美aⅴ一区二区三区视频| 亚洲美女少妇撒尿| 日本一区二区三区dvd视频在线| 欧美日韩国产色站一区二区三区| 不卡在线观看av| 国产伦精品一区二区三区免费 | 成人亚洲一区二区一| 日本亚洲免费观看| 亚洲曰韩产成在线| 亚洲免费视频成人| 中文字幕亚洲一区二区va在线| 久久久精品日韩欧美| 欧美xxxxx裸体时装秀| 欧美久久久影院| 欧美视频在线观看一区| 色哟哟在线观看一区二区三区| 国产+成+人+亚洲欧洲自线| 久久精品国产亚洲a| 免费高清在线一区| 蜜臀精品久久久久久蜜臀 | 国产一区二区三区精品视频| 日本美女视频一区二区| 婷婷国产v国产偷v亚洲高清| 亚洲福利视频导航| 五月天欧美精品| 午夜亚洲福利老司机| 午夜精品久久久久久不卡8050| 一区二区在线看| 亚洲资源中文字幕| 亚洲成人7777| 日本一不卡视频| 麻豆91在线看| 极品瑜伽女神91| 激情五月激情综合网| 国产曰批免费观看久久久| 国产一区二区精品久久| 国产精品一区久久久久| 成人一级片在线观看| a级高清视频欧美日韩| 91一区二区三区在线播放| 色婷婷久久久久swag精品| 在线观看日韩电影| 欧美一区二区人人喊爽| 精品国产第一区二区三区观看体验| 日韩欧美第一区| 国产女同互慰高潮91漫画| 中文字幕佐山爱一区二区免费| 亚洲免费大片在线观看| 三级一区在线视频先锋 | 成人a免费在线看| 色综合激情五月| 欧美精品一二三四| 欧美成人免费网站| 中文字幕不卡三区| 一区二区三区欧美| 免费在线欧美视频| 成人99免费视频| 欧美在线|欧美| 日韩欧美精品在线视频| 国产精品电影院| 偷窥国产亚洲免费视频| 国产精品亚洲午夜一区二区三区 | 国产精品99久久久久久久vr| 成人动漫一区二区三区| 欧美日韩一区二区在线视频| 26uuu另类欧美| 亚洲欧美另类久久久精品| 日韩vs国产vs欧美| 99在线视频精品| 欧美一级欧美一级在线播放| 国产欧美日韩视频在线观看| 午夜欧美大尺度福利影院在线看| 国产精品一区二区在线播放| 欧美影视一区在线| 国产欧美精品一区| 男女性色大片免费观看一区二区 | 精品一区二区三区在线观看| 成人小视频免费在线观看| 欧美精品 国产精品| 欧美国产日韩在线观看| 日本aⅴ精品一区二区三区| 91在线视频官网| 精品欧美久久久| 一区二区成人在线观看| 国产精品中文字幕日韩精品| 欧美色国产精品| 中文字幕精品综合| 青青草97国产精品免费观看无弹窗版 | 欧美亚洲国产一区二区三区va | 亚洲午夜视频在线| 国产精品综合在线视频| 欧美日韩视频专区在线播放| 国产精品久久三| 美女精品一区二区| 欧美日韩国产综合久久| 亚洲日本在线视频观看| 国产精品综合一区二区| 欧美一级在线免费| 婷婷六月综合亚洲| 色偷偷久久人人79超碰人人澡| 久久伊人中文字幕| 人人狠狠综合久久亚洲| 欧美午夜精品久久久久久孕妇| 中文字幕不卡在线播放| 国产一区二三区| 精品国产露脸精彩对白| 成人激情av网| 久久色视频免费观看| 免费一级欧美片在线观看| 欧美日韩高清在线| 亚洲一区二区三区影院| 色婷婷综合五月| 亚洲精品国产视频| 91小宝寻花一区二区三区| 国产精品视频在线看| 国产91精品露脸国语对白| 久久久久青草大香线综合精品| 久久精品国产色蜜蜜麻豆| 日韩一区二区三| 免费一级欧美片在线观看| 欧美一区二区三区在线视频| 午夜a成v人精品| 欧美日韩高清一区二区三区| 午夜伦理一区二区| 欧美疯狂性受xxxxx喷水图片| 亚洲影院久久精品| 欧美美女黄视频| 人人精品人人爱| 欧美v国产在线一区二区三区| 久久精品国产成人一区二区三区| 精品日韩一区二区三区免费视频| 免费人成网站在线观看欧美高清| 日韩欧美一区在线| 国产裸体歌舞团一区二区| 久久午夜电影网| 成人午夜电影小说| 国产精品久久久久一区二区三区| av欧美精品.com| 亚洲一区在线播放| 日韩丝袜情趣美女图片| 久久精品国产77777蜜臀| 国产午夜精品一区二区三区视频 | 欧美日韩免费高清一区色橹橹 | 欧美国产国产综合| 91免费小视频| 三级欧美在线一区| 久久女同精品一区二区| 99久久精品国产一区二区三区| 亚洲日本一区二区| 7777精品久久久大香线蕉| 麻豆精品视频在线观看免费| 中文字幕欧美区| 欧美色精品在线视频| 韩国成人在线视频| 国产精品久久久久天堂| 欧美熟乱第一页| 国产精一区二区三区| 亚洲美女在线一区| 欧美电影免费提供在线观看| 成人激情小说网站| 亚洲国产精品一区二区尤物区| 日韩丝袜美女视频| 99re成人精品视频| 日本欧美一区二区| 国产精品污www在线观看| 欧美在线看片a免费观看| 韩国女主播成人在线| 亚洲日本va午夜在线电影| 日韩西西人体444www| 成人在线视频首页| 免费人成在线不卡| 国产精品成人一区二区艾草| 欧美一区二区三区视频免费播放| 成人丝袜视频网| 日日夜夜一区二区| 一区在线观看视频| 精品国产乱码久久久久久夜甘婷婷| 日本道精品一区二区三区| 精品一区中文字幕| 一区二区三区在线视频免费观看| 日韩欧美在线网站| 欧美在线free| 欧美伦理电影网| 不卡的看片网站| 国产一区三区三区| 午夜久久久影院| 一区二区三区在线观看视频| 久久综合999| 日韩一二三四区|