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

📄 propertypage7.cpp

📁 mytoolpad 源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "io.h"
#include "MyToolPad.h"
#include "PropertyPage7.h"
#include "GetDirectory.h"
#include "OrganizeInifile.h"

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


CString m_directory;
IMPLEMENT_DYNCREATE(CPropertyPage7, CPropertyPage)

CPropertyPage7::CPropertyPage7() : CPropertyPage(CPropertyPage7::IDD)
{
	//{{AFX_DATA_INIT(CPropertyPage7)
	m_exefile = _T("");
	m_shortname = _T("");
	m_text = TRUE;
	m_system = FALSE;
	m_read = FALSE;
	m_hidden = FALSE;
	m_error = _T("");
	m_end = _T("");
	m_reset = _T("");
	m_begin = _T("");
	//}}AFX_DATA_INIT

	char windows[200];
	GetWindowsDirectory(windows,200);
	m_directory=_T(windows);
	m_error=m_directory;

	if(FileExist("c:\\logo.sys"))
		m_begin=_T("c:\\logo.sys");

	m_end=_T(windows);
	m_end+=_T("\\logow.sys");
	if(!FileExist(m_end))
		m_end=_T("");

	m_reset=_T(windows);
	m_reset+=_T("\\logos.sys");
	if(!FileExist(m_reset))
		m_reset=_T("");
}

CPropertyPage7::~CPropertyPage7()
{
}

void CPropertyPage7::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPropertyPage7)
	DDX_Control(pDX, IDC_SELECTDIR, m_ctrl6);
	DDX_Control(pDX, IDC_SETUPATTRIBUTE, m_ctrl5);
	DDX_Control(pDX, IDC_BROWSEEXECUTE, m_ctrl4);
	DDX_Control(pDX, IDC_BROWSE3, m_ctrl3);
	DDX_Control(pDX, IDC_BROWSE2, m_ctrl2);
	DDX_Control(pDX, IDC_BROWSE, m_ctrl1);
	DDX_Control(pDX, IDC_SETUP3, m_s3);
	DDX_Control(pDX, IDC_SETUP2, m_s2);
	DDX_Control(pDX, IDC_SETUP, m_s1);
	DDX_Control(pDX, IDC_STARTTREE, m_start);
	DDX_Control(pDX, IDC_SHORTNAME, m_shortctrl);
	DDX_Control(pDX, IDC_MAKEEFFECT, m_effect);
	DDX_Text(pDX, IDC_EXECUTEFILE, m_exefile);
	DDX_Text(pDX, IDC_SHORTNAME, m_shortname);
	DDX_Check(pDX, IDC_TEXTONLY, m_text);
	DDX_Check(pDX, IDC_SYSTEMONLY, m_system);
	DDX_Check(pDX, IDC_READONLY, m_read);
	DDX_Check(pDX, IDC_HIDDENONLY, m_hidden);
	DDX_Text(pDX, IDC_ERROR, m_error);
	DDX_Text(pDX, IDC_ENDPICTURE, m_end);
	DDX_Text(pDX, IDC_RESTARTPICTURE, m_reset);
	DDX_Text(pDX, IDC_STARTPICTURE, m_begin);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPropertyPage7, CPropertyPage)
	//{{AFX_MSG_MAP(CPropertyPage7)
	ON_BN_CLICKED(IDC_BROWSEEXECUTE, OnBrowseexecute)
	ON_EN_CHANGE(IDC_EXECUTEFILE, OnChangeExecutefile)
	ON_BN_CLICKED(IDC_MAKEEFFECT, OnMakeeffect)
	ON_EN_CHANGE(IDC_SHORTNAME, OnChangeShortname)
	ON_BN_CLICKED(IDC_DELETESTART, OnDeleteshortcut)
	ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
	ON_NOTIFY(NM_RCLICK, IDC_STARTTREE, OnRclickStarttree)
	ON_NOTIFY(TVN_ENDLABELEDIT, IDC_STARTTREE, OnEndlabeleditStarttree)
	ON_NOTIFY(TVN_KEYDOWN, IDC_STARTTREE, OnKeydownStarttree)
	ON_BN_CLICKED(IDC_SELECTDIR, OnSelectdir)
	ON_BN_CLICKED(IDC_SETUPATTRIBUTE, OnSetupattribute)
	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
	ON_BN_CLICKED(IDC_BROWSE2, OnBrowse2)
	ON_BN_CLICKED(IDC_BROWSE3, OnBrowse3)
	ON_EN_CHANGE(IDC_ENDPICTURE, OnChangeEndpicture)
	ON_EN_CHANGE(IDC_RESTARTPICTURE, OnChangeRestartpicture)
	ON_EN_CHANGE(IDC_STARTPICTURE, OnChangeStartpicture)
	ON_BN_CLICKED(IDC_SETUP, OnSetup)
	ON_BN_CLICKED(IDC_SETUP2, OnSetup2)
	ON_BN_CLICKED(IDC_SETUP3, OnSetup3)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


BOOL CPropertyPage7::OnSetActive() 
{
	InitPanel();
	EnablePanel();

	return CPropertyPage::OnSetActive();
}

void CPropertyPage7::OnBrowseexecute() 
{
	CFileDialog dlg(TRUE,"*.exe",m_exefile,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"执行文件 (*.exe)|*.exe||");
	if(dlg.DoModal()==IDOK)
	{
		m_exefile=dlg.GetPathName();
		UpdateData(FALSE);
		EnablePanel();
	}
}

void CPropertyPage7::OnChangeExecutefile() 
{
	EnablePanel();
}
void CPropertyPage7::OnChangeShortname() 
{
	EnablePanel();
}

void CPropertyPage7::OnMakeeffect() 
{
	COrganizeInifile m_ini;
	char * m_name=m_shortname.GetBuffer(m_shortname.GetLength());
	char * m_exe=m_exefile.GetBuffer(m_exefile.GetLength());
	m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",m_name,m_exe);
	InitPanel();
}


void CPropertyPage7::OnRclickStarttree(NMHDR* pNMHDR, LRESULT* pResult)
{
	CMenu menu;
	menu.CreatePopupMenu();
	CPoint point;
	GetCursorPos(&point);

	HTREEITEM m_item=m_start.GetSelectedItem();
	DWORD m_data=m_start.GetItemData(m_item);
	DWORD m_left=m_data%1000;
	if(m_item!=m_start.GetRootItem() && m_left!=0)
		menu.AppendMenu(MF_ENABLED,IDC_DELETESTART,"删除快捷方式");
	menu.AppendMenu(MF_ENABLED,IDC_REFRESH,"刷新快捷方式");
	menu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
	
	*pResult = 0;
}
void CPropertyPage7::OnEndlabeleditStarttree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
	if(pTVDispInfo->item.pszText==0)
	    return ;
	
	if(pTVDispInfo->item.hItem==NULL || pTVDispInfo->item.hItem==m_start.GetRootItem())
		return;
	DWORD m_data=m_start.GetItemData(pTVDispInfo->item.hItem);
	if(m_data==1000 || m_data==2000 || m_data==3000)
		return;

	m_start.SetItemText(pTVDispInfo->item.hItem,pTVDispInfo->item.pszText);
	*pResult = 0;
}
void CPropertyPage7::OnKeydownStarttree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	TV_KEYDOWN* pTVKeyDown = (TV_KEYDOWN*)pNMHDR;

	HTREEITEM hSel=m_start.GetSelectedItem();
	if(hSel==NULL || hSel==m_start.GetRootItem())
		return;
	DWORD m_data=m_start.GetItemData(hSel);
	if(m_data==1000 || m_data==2000 || m_data==3000)
		return;

	switch(pTVKeyDown->wVKey)
	{
	case VK_DELETE:
		break;
	case VK_F2:
		m_start.EditLabel(hSel);
		break;
	}
	
	*pResult = 0;
}

void CPropertyPage7::InitPanel()
{
	m_start.DeleteAllItems();
	HTREEITEM m_root  =CreateTree(m_start,"所有自启动项");
	HTREEITEM m_first =InsertTreeItem(m_start,"Win.ini",1000,m_root,0);
	HTREEITEM m_second=InsertTreeItem(m_start,"启动",2000,m_root,0);
	HTREEITEM m_third =InsertTreeItem(m_start,"注册表",3000,m_root,0);

	WinIniToTree(m_first);
	StartToTree(m_second);
	RegistryToTree(m_third);
	m_start.Expand(m_start.GetRootItem(),TVE_EXPAND);
	m_start.SelectItem(m_first);
	UpdateData(FALSE);
}

void CPropertyPage7::EnablePanel()
{
	UpdateData(TRUE);
	BOOL m_enable=FileExist(m_exefile);
	m_shortctrl.EnableWindow(m_enable);
	m_enable=(m_enable && (m_shortname!=_T("")));
	m_effect.EnableWindow(m_enable);

	m_enable=FileExist(m_begin);
	m_s1.EnableWindow(m_enable);
	m_enable=FileExist(m_end);
	m_s2.EnableWindow(m_enable);
	m_enable=FileExist(m_reset);
	m_s3.EnableWindow(m_enable);
}

int  CPropertyPage7::SplitToTree(HTREEITEM m_root,char * buffer,int m_startindex)
{
	int  m_len=strlen(buffer),m_index=0,m_itemindex=m_startindex;
	char m_item[200];
	memset(m_item,0,200);
	for(int i=0;i<m_len;i++)
	{
		if(buffer[i]==' ')
		{	
			if(strcmp(m_item,"")!=0)
			{
				m_itemindex++;
				InsertTreeItem(m_start,m_item,m_itemindex,m_root,0);
			}
			memset(m_item,0,200);
			m_index=0;
		}
		else
		{
			m_item[m_index]=buffer[i];
			m_index++;
		}
	}
	if(strcmp(m_item,"")!=0)
	{
		m_itemindex++;
		InsertTreeItem(m_start,m_item,m_itemindex,m_root,0);
	}
	return m_startindex;
}

void CPropertyPage7::WinIniToTree(HTREEITEM m_root)
{
	char buffer[255],windows[200];
	GetWindowsDirectory(windows,200);
	strcat(windows,"\\win.ini");
	GetPrivateProfileString("windows","load","",buffer,255,windows);
	int m_index=1001;
	m_index=SplitToTree(m_root,buffer,m_index);
	GetPrivateProfileString("windows","run","",buffer,255,windows);
	SplitToTree(m_root,buffer,m_index);
}

void CPropertyPage7::StartToTree(HTREEITEM m_root)
{
	char dir[200];
	GetWindowsDirectory(dir,200);
	int  id=2001,ret=0;
	struct _finddata_t fileinfo;
	strcat(dir,"\\Start Menu\\Programs\\启动\\*.*");
	long handle=_findfirst(dir,&fileinfo);
	while(handle && (ret==0))
	{			
		if(!(fileinfo.attrib & _A_SUBDIR))
		{
			InsertTreeItem(m_start,fileinfo.name,id,m_root,0);
			id++;
		}
		ret=_findnext(handle,&fileinfo);
	}
}

void CPropertyPage7::RegistryToTree(HTREEITEM m_root)
{
	char m_key[255]="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
	HKEY m_hkey;
	char m_name[200],m_dada[200];
	DWORD m_namelen=200,m_datalen=200,m_index=0;
	DWORD m_attr=REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_NONE|REG_SZ;
	memset(m_name,0,200);
	memset(m_dada,0,200);

	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_key,0,KEY_ALL_ACCESS,&m_hkey)==ERROR_SUCCESS)
	{
		m_namelen=200;
		m_datalen=200;
		memset(m_name,0,200);
		memset(m_dada,0,200);

		while(RegEnumValue(m_hkey,m_index,m_name,&m_namelen,NULL,&m_attr,(LPBYTE)m_dada,&m_datalen)==ERROR_SUCCESS)
		{
			m_index++;
			if(strcmp(m_name,"")!=0)
				InsertTreeItem(m_start,m_name,3001+m_index,m_root,0);

			m_namelen=200;
			m_datalen=200;
			memset(m_name,0,200);
			memset(m_dada,0,200);
		}
		RegCloseKey(m_hkey);
	}

	m_index=0;
	if(RegOpenKeyEx(HKEY_CURRENT_USER,m_key,0,KEY_ALL_ACCESS,&m_hkey)==ERROR_SUCCESS)
	{
		m_namelen=200;
		m_datalen=200;

⌨️ 快捷键说明

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