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

📄 qqadddlg.cpp

📁 QQ自动登陆器
💻 CPP
字号:
// QQAddDlg.cpp : implementation file
//

#include "stdafx.h"
#include "QQ自动登陆器.h"
#include "QQAddDlg.h"
#include "MD5.h"

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

/////////////////////////////////////////////////////////////////////////////
// QQAddDlg dialog


QQAddDlg::QQAddDlg(CWnd* pParent /*=NULL*/)
	: CDialog(QQAddDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(QQAddDlg)
	m_szQQNumber = _T("");
	m_szQQName = _T("");
	m_szQQPWD = _T("");
	m_bHideLogon = FALSE;
	QQNbrValid = QQ_VALID;
	//}}AFX_DATA_INIT
}


void QQAddDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(QQAddDlg)
	DDX_Check(pDX, IDC_CHECK_HIDE, m_bHideLogon);
	DDX_Text(pDX, IDC_EDIT_QQNAME, m_szQQName);
	DDV_MaxChars(pDX, m_szQQName, 12);
	DDX_Text(pDX, IDC_EDIT_QQNBR, m_szQQNumber);
	DDV_MaxChars(pDX, m_szQQNumber, 14);
	DDX_Text(pDX, IDC_EDIT_QQPWD, m_szQQPWD);
	DDV_MaxChars(pDX, m_szQQPWD, 16);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(QQAddDlg, CDialog)
	//{{AFX_MSG_MAP(QQAddDlg)
	ON_BN_CLICKED(IDC_BUTTON_ADDQQNOW, OnButtonAddqqnow)
	ON_BN_CLICKED(IDC_BUTTON_ADDQQLATE, OnButtonAddqqlate)
	ON_BN_CLICKED(IDC_BUTTON_CLEARINFO, OnButtonClearinfo)
	ON_EN_CHANGE(IDC_EDIT_QQNBR, OnChangeEditQQNbr)
	ON_EN_CHANGE(IDC_EDIT_QQNAME, OnChangeEditQqname)
	ON_EN_CHANGE(IDC_EDIT_QQPWD, OnChangeEditQqpwd)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// QQAddDlg message handlers

void QQAddDlg::OnButtonAddqqnow() 
{
	UpdateData(TRUE);
	// 检查必填项
	if (m_szQQNumber.IsEmpty() || m_szQQName.IsEmpty() || m_szQQPWD.IsEmpty())
	{
		SetDlgItemText(IDC_RESULT_INFO, "错误: QQ号码,昵称,密码必填!");
		//AfxMessageBox("错误: QQ号码,昵称,密码 三处必填!");
		return;
	}
	// 检查QQ号码
	if (QQ_NO_CHAR == QQNbrValid)
	{
		SetDlgItemText(IDC_RESULT_INFO, "错误: QQ号码只能全是数字!");
		return;
	}
	else if (QQ_DUP == QQNbrValid)
	{
		SetDlgItemText(IDC_RESULT_INFO, "错误: 列表中已有此QQ号码!");
		return;

	}
	// 密码限制
	if (m_szQQPWD.GetLength() > 16)
	{
		SetDlgItemText(IDC_RESULT_INFO, "错误: QQ密码错误, 最长16位!");
		//AfxMessageBox("错误: QQ密码错误, 最长16位!");
		return;
	}
	// 昵称限制 本地就不限制了
	
	// 有修改,需要更新
	QQListNeedUpdate = TRUE;

	// 密码MD5Hex存放
	unsigned char PWDMD5[16];
	void* QQPWDStr = (PVOID)((LPCTSTR)m_szQQPWD);
	MD5::ToMD5(PWDMD5,QQPWDStr,m_szQQPWD.GetLength());
	CString MD5Hex;
	MemToHexStr(PWDMD5, 16, MD5Hex);
	CString LogonStatus = m_bHideLogon?"隐身":"在线";
	
	// 添加可以连续,修改只有一次
	if (TRUE == EditQQInfo)
	{
		int i = QQInfoIndex;
		CString IsUsing = QQInfoList[i].IsUsing()?"挂":"停";
		QQInfoList[i]=QQInfo(m_szQQNumber,m_szQQName,MD5Hex,LogonStatus);
		QQInfoList[i].SetQQUsOrNot(IsUsing);
		WriteIniQQNbr(QQLIST_CONTENT, QQLISTNO, i, QQInfoList[i].GetConfStr(), g_ConfigFilePath);
		SetDlgItemText(IDC_RESULT_INFO, "成功: 修改完成!切换到QQ列表!");
	}
	else
	{
		QQInfoList.push_back(QQInfo(m_szQQNumber,m_szQQName,MD5Hex,LogonStatus));
		//g_QQListLength++; 暂不修改
		int i = QQInfoList.size()-1;
		WriteIniQQNbr(QQLIST_CONTENT, QQLISTNO, i, QQInfoList[i].GetConfStr(), g_ConfigFilePath);
		CString QQCount;
		QQCount.Format("%d",QQInfoList.size());
		WritePrivateProfileString(MAIN_CONFIG,QQLIST_LEN,QQCount,g_ConfigFilePath);
		SetDlgItemText(IDC_RESULT_INFO, "成功: 添加完成!可以继续添加!");
		ClearQQInfo();
		return;
	}

	ChangeToQQlistDlg();
}

void QQAddDlg::OnButtonAddqqlate() 
{
	EditQQInfo = FALSE;
	QQInfoIndex = -1;

	ChangeToQQlistDlg();
}

void QQAddDlg::ClearQQInfo()
{
	m_szQQNumber = _T("");
	m_szQQName = _T("");
	m_szQQPWD = _T("");
	m_bHideLogon = FALSE;
	QQNbrValid = QQ_VALID;
	UpdateData(FALSE);
	
	SetDlgItemText(IDC_QQNBR_LEN, "0");
	SetDlgItemText(IDC_QQNAME_LEN, "0");
	SetDlgItemText(IDC_QQPWD_LEN, "0");
}

void QQAddDlg::OnButtonClearinfo()
{
	ClearQQInfo();
}

void QQAddDlg::SetQQInfoShow(QQInfo& InfoShow)
{
	InfoShow.GetQQInfo(m_szQQNumber, m_szQQName, m_szQQPWD, m_bHideLogon);
	UpdateData(FALSE);
}

// 切换到QQ列表
void QQAddDlg::ChangeToQQlistDlg()
{
	ShowAddDlg = FALSE;
	ShowWindow(SW_HIDE);
	NMHDR   nmhdr;   
	nmhdr.code=TCN_SELCHANGE;   
	nmhdr.hwndFrom=((CTabCtrl*)GetParent())->GetSafeHwnd(); 
	nmhdr.idFrom=IDC_TAB1;
	::SendMessage(nmhdr.hwndFrom,WM_NOTIFY,(WPARAM)IDC_TAB1,(LPARAM)(&nmhdr));
}

void QQAddDlg::OnChangeEditQQNbr() 
{
	UpdateData(TRUE);
	CString sLen;
	sLen.Format("%d",m_szQQNumber.GetLength());
	SetDlgItemText(IDC_QQNBR_LEN, sLen);

	// 检查QQ号码
	if (m_szQQNumber != m_szQQNumber.SpanIncluding("0123456789"))
	{
		SetDlgItemText(IDC_RESULT_INFO, "错误: QQ号码只能全是数字!");
		QQNbrValid = QQ_NO_CHAR;
		return;
	}
	else
	{
		// 检查重复
		for (int i = 0; i< QQInfoList.size(); i++)
		{
			// 修改操作时不检查本身
			if (TRUE == EditQQInfo && i == QQInfoIndex)
			{
				continue;
			}
			if (QQInfoList[i].IsDup(m_szQQNumber))
			{
				SetDlgItemText(IDC_RESULT_INFO, "错误: 列表中已有此QQ号码!");
				QQNbrValid = QQ_DUP;
				return;
			}
		}
	}
	QQNbrValid = QQ_VALID;
	SetDlgItemText(IDC_RESULT_INFO, "状态: 此QQ号码合理有效!");
}

BOOL QQAddDlg::PreTranslateMessage(MSG* pMsg) 
{
	if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
	{
		return TRUE;
	}
	if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
	{
		return TRUE;
	}
	if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_SPACE &&
		GetFocus() != GetDlgItem(IDC_EDIT_QQPWD))
	{
		if (GetFocus() == GetDlgItem(IDC_EDIT_QQNAME))
		{
			if (m_szQQName.GetLength()<12)
			{
				m_szQQName+="_";
				UpdateData(FALSE);
				CEdit* pQQName = (CEdit*)GetDlgItem(IDC_EDIT_QQNAME);
				pQQName->SetSel(m_szQQName.GetLength(),m_szQQName.GetLength());
			}
		}
		return TRUE;
	}
	
	return CDialog::PreTranslateMessage(pMsg);
}

void QQAddDlg::OnChangeEditQqname() 
{
	UpdateData(TRUE);
	CString sLen;
	sLen.Format("%d",m_szQQName.GetLength());
	SetDlgItemText(IDC_QQNAME_LEN, sLen);
}

void QQAddDlg::OnChangeEditQqpwd() 
{
	UpdateData(TRUE);
	CString sLen;
	sLen.Format("%d",m_szQQPWD.GetLength());
	SetDlgItemText(IDC_QQPWD_LEN, sLen);
}

⌨️ 快捷键说明

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