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

📄 collectordlg.cpp

📁 1.MyIE开源工程协议 MyIE开源工程遵循GNU通用公共许可证GPL(GNU General Public License)开发,任何人都可以永久免费安装使用,在你下载和使用MyIE源代码前,请
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// CollectorDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyIE.h"
#include "CollectorDlg.h"
#include "MainFrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCollectorDlg dialog

//#pragma optimize( "s", on)

#define MAX_COLLECTOR	1024*1024

CCollectorDlg::CCollectorDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCollectorDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCollectorDlg)
	//}}AFX_DATA_INIT
}


void CCollectorDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCollectorDlg)
	DDX_Control(pDX, IDC_TXT, m_txt);
	DDX_Control(pDX, IDC_IMAGE, m_output);
	DDX_Control(pDX, IDC_FILTER, m_script);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCollectorDlg, CDialog)
	//{{AFX_MSG_MAP(CCollectorDlg)
	ON_WM_CLOSE()
	ON_WM_DESTROY()
	ON_WM_SIZE()
	ON_WM_CREATE()
	ON_WM_LBUTTONDBLCLK()
	//}}AFX_MSG_MAP
	ON_COMMAND(ID_COLLECTOR_TXT, OnCollectorTxt)
	ON_COMMAND(ID_COLLECTOR_OUTPUT, OnCollectorOutput)
	ON_COMMAND(ID_COLLECTOR_SCRIPT, OnCollectorScript)
	ON_COMMAND(ID_COLLECTOR_CLEAR, OnCollectorClean)
	ON_COMMAND(ID_COLLECTOR_SAVE, OnCollectorSave)
	ON_COMMAND(ID_COLLECTOR_TRANS, OnCollectorMode)
	ON_COMMAND(ID_RUN_SCRIPT, OnRunScript)
	ON_COMMAND(ID_OPEN_SELECTED_TEXT, OnOpenSelectedText)
	ON_COMMAND(ID_OPEN_CURSOR_LINE, OnOpenCursorLine)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCollectorDlg message handlers

void CCollectorDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	SaveCollector();
	CDialog::OnClose();
}

void CCollectorDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	// TODO: Add your message handler code here
	if (pmf->m_bOutputAutoClean)
		CleanOutputCollector();
	SaveCollector();
}


void CCollectorDlg::SaveCollector()
{
	CString txt;
	CFile f;
	m_txt.GetWindowText(txt);
	if(f.Open(theApp.m_strUser+"CollectorText.txt", CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone))
	{
		f.Write((void*)(LPCSTR)txt, txt.GetLength());
		f.Close();
	}
	//
	m_output.GetWindowText(txt);
	if(f.Open(theApp.m_strUser+"CollectorOutput.txt", CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone))
	{
		f.Write((void*)(LPCSTR)txt, txt.GetLength());
		f.Close();
	}
	//
	m_script.GetWindowText(txt);
	if(f.Open(theApp.m_strUser+"CollectorScript.txt", CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone))
	{
		f.Write((void*)(LPCSTR)txt, txt.GetLength());
		f.Close();
	}
}


void CCollectorDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	m_txt.SetWindowPos(&CWnd::wndTop, 0,23, cx,cy-23, 0);
	m_output.SetWindowPos(&CWnd::wndTop, 0,23, cx,cy-23, 0);
	m_script.SetWindowPos(&CWnd::wndTop, 0,23, cx,cy-23, 0);
	m_ToolBar.SetWindowPos(&CWnd::wndTop, 0,0, cx,22, 0);
}


/*************************************************************
CTxtDropTarget
**************************************************************/

DROPEFFECT CTxtDropTarget::OnDragScroll(CWnd* pWnd, DWORD dwKeyState, CPoint point)
{
	return DROPEFFECT_SCROLL | DROPEFFECT_COPY | DROPEFFECT_LINK;
}

DROPEFFECT CTxtDropTarget::OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject, 
                                      DWORD dwKeyState, CPoint point)
{
    DROPEFFECT dwEffect;
	dwEffect=DROPEFFECT_COPY;
    return dwEffect;
}

void CTxtDropTarget::OnDragLeave(CWnd* pWnd)
{
}

DROPEFFECT CTxtDropTarget::OnDragOver(CWnd* pWnd, COleDataObject* pDataObject, 
                                     DWORD dwKeyState, CPoint point)
{
    DROPEFFECT dwEffect;
	dwEffect=DROPEFFECT_COPY;
    return dwEffect;
}

//type:
//0: text collector
//11: filter
//12: page
//13: img
void CTxtDropTarget::SaveText(CString str, int type)
{
	CString strTime;
	if (pmf->m_bOutputSaveTime)
	{
		SYSTEMTIME time;
		::GetLocalTime(&time);
		strTime.Format("[%02d/%02d-%02d:%02d:%02d] ",time.wMonth,time.wDay,time.wHour,time.wMinute,time.wSecond);
	}
	if (type==0)
	{
		if (strTime.GetLength())
			str = strTime + "\r\n" + str;
	}
	else
	{
		str = strTime + str;
		pmf->SetMessageText(str);
	}
	//
	str += "\r\n";
	CEdit *edit;
	CString strfile;
	//
	if (type==0)
	{
		edit = &(pmf->m_pCollectDlg->m_txt);
		strfile = theApp.m_strUser+"CollectorText.txt";
		if(pmf->m_pCollectDlg)
			pmf->m_pCollectDlg->OnCollectorTxt();
	}
	else
	{
		if (type==11 && !pmf->m_bOutputSaveFilter)
			return;
		else if (type==12 && !pmf->m_bOutputSavePage)
			return;
		else if (type==13 && !pmf->m_bOutputSaveImg)
			return;
		else if (type==14 && !pmf->m_bOutputSaveText)
			return;
		else if (type==15 && !pmf->m_bOutputSaveUrlFilter)
			return;
		edit = &(pmf->m_pCollectDlg->m_output);
		strfile = theApp.m_strUser+"CollectorOutput.txt";
		if(pmf->m_pCollectDlg)
			pmf->m_pCollectDlg->OnCollectorOutput();
	}
	//
	if(pmf->m_pCollectDlg)
	{
		int len = edit->GetWindowTextLength( );
		if (len>=MAX_COLLECTOR)
		{
			if (type==0)
				MSGBOX(IDS_MAX_COLLECTOR_TXT);
			else if (type==1)
				MSGBOX(IDS_MAX_COLLECTOR_OUTPUT);
			else
				MSGBOX(IDS_MAX_COLLECTOR_SCRIPT);
			return;
		}
		else
		{
			if (pmf->m_bCollectorAddtoBottom)
				edit->SetSel(len, len);
			else
				edit->SetSel(0,0);
			edit->ReplaceSel(str);
		}
	}
	else
	{
		CFile f;
		if(f.Open(strfile, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite|CFile::shareDenyNone))
		{
			f.SeekToBegin();
			f.Write((void*)(LPCSTR)str, str.GetLength());
			f.Close();
		}
	}
}

BOOL CTxtDropTarget::OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
                           DROPEFFECT dropEffect, CPoint point)
{
	try{
	CString strMsg;
	//
    HGLOBAL hData=pDataObject->GetGlobalData(CF_TEXT);
    if (hData)
	{
		LPCSTR lpcszData=(LPCSTR)GlobalLock(hData);
		GlobalUnlock(hData);

		//if it is a link
		HGLOBAL hLinkData=pDataObject->GetGlobalData(RegisterClipboardFormat("FileGroupDescriptor"));
		LPCSTR lpcszLink;
		if(hLinkData)
		{
			lpcszLink=((LPCSTR)GlobalLock(hLinkData)) + 76;
			strMsg = lpcszLink;
			strMsg = strMsg.Left(strMsg.GetLength()-4);//cut .url of abc.url
			strMsg += " => ";
			strMsg += lpcszData;
			GlobalUnlock(hLinkData);
		}
		else
			strMsg += lpcszData;
		strMsg += "\r\n";
		SaveText(strMsg, 0);
	}
	else
	{
		hData=pDataObject->GetGlobalData(CF_HDROP);
		if (!hData) 
		{
			TRACE("Fail in getting data\n");
			MSGBOX(IDS_NOT_DROP_IMG);
			return FALSE;
		}

		HDROP hdrop =(HDROP)GlobalLock(hData);
		DragQueryFile(hdrop, 0, g_szFile, 1024);
		GlobalUnlock(hData);

		CString filename, rfile;
		filename = g_szFile;
		int l = filename.ReverseFind('\\');
		filename = filename.Mid(l+1);
		//fix filename, remove [x]
		l = filename.ReverseFind('[');
		int i = filename.ReverseFind(']');
		CString ext = filename.Mid(i+1);
		filename = filename.Left(l);
		//?
		CString imgPath = theApp.m_strImagePath;
		if(pmf->m_bImgCateWithSite)
		{
			CString site;
			CChildFrame* tcf = (CChildFrame*)pmf->MDIGetActive();
			site = tcf->m_pView->m_lpszUrl;
			pmf->GetSiteName(site);
			imgPath = imgPath + site + "\\";
		}
		//create dir
		_CreateFullDir(imgPath);
		filename = imgPath + filename;
		//compare file size
		DWORD sz1=0, sz2=0;
		HANDLE hfile = INVALID_HANDLE_VALUE;
		hfile = CreateFile(g_szFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
		if(hfile != INVALID_HANDLE_VALUE)
			sz1 = GetFileSize(hfile, NULL);
		CloseHandle(hfile);
		hfile = INVALID_HANDLE_VALUE;
		hfile = CreateFile(filename+ext, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
		if(hfile != INVALID_HANDLE_VALUE)
			sz2 = GetFileSize(hfile, NULL);
		CloseHandle(hfile);

		rfile = filename + ext;
		if (sz1==0)//img not show
		{
			MSGBOX(IDS_SAVEIMAGEFAIL);
			return TRUE;
		}
		else if (sz1==sz2)//exist the same file
		{
			LOADSTR(strMsg ,IDS_IMG_EXISTED);
			strMsg += rfile;
			pmf->SetMessageText(strMsg);//SaveText(strMsg,13);
			return TRUE;
		}
		else if(sz1!=sz2 && sz2!=0)
		{
			char tmp[4];
			l = 0;
			HFILE hf; OFSTRUCT of;
			hf = OpenFile(rfile, &of, OF_EXIST);
			while(hf!=HFILE_ERROR)
			{
				l++;
				rfile = filename;
				rfile += '[';
				itoa(l, tmp, 10);
				rfile += tmp;
				rfile += ']';
				rfile += ext;
				hf = OpenFile(rfile, &of, OF_EXIST);
			}
		}
		
		//copy files
		if(!CopyFile(g_szFile, rfile, FALSE))
		{
			DWORD dwError = GetLastError();
			if(dwError == ERROR_PATH_NOT_FOUND)
				MSGBOX(IDS_SAVEIMAGEFAIL);
		}
		else
		{
			LOADSTR(strMsg ,IDS_IMG_SAVE_TO);
			strMsg += rfile;
			//
			CChildFrame* tcf = (CChildFrame*)pmf->MDIGetActive();
			strMsg += " <= ";
			strMsg += tcf->m_pView->m_lpszUrl;
			//
			SaveText(strMsg,13);
		}
	}

⌨️ 快捷键说明

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