📄 propertypage7.cpp
字号:
#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 + -