📄 collectordlg.cpp
字号:
// 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 + -