📄 mypropertypage8.cpp
字号:
#include "stdafx.h"
#include "MyToolPad.h"
#include "MyPropertyPage8.h"
#include "OrganizeInifile.h"
#include "MyPropertySheet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CMyPropertySheet *m_sheet;
IMPLEMENT_DYNCREATE(CMyPropertyPage8, CPropertyPage)
CMyPropertyPage8::CMyPropertyPage8() : CPropertyPage(CMyPropertyPage8::IDD)
{
GetDevicePath();
char m_buffer[200],*m_add;
COrganizeInifile m_ini;
m_add=m_MTUpath.GetBuffer(m_MTUpath.GetLength());
strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"MaxMTU"));
int m_max=atoi(m_buffer);
m_add=m_Otherpath.GetBuffer(m_Otherpath.GetLength());
strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"DefaultTTL"));
int m_tl =atoi(m_buffer);
m_add=m_Otherpath.GetBuffer(m_Otherpath.GetLength());
strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"DefaultRcvWindow"));
int m_rec=atoi(m_buffer);
m_add=m_Otherpath.GetBuffer(m_Otherpath.GetLength());
strcpy(m_buffer,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_add,"NameSrvQueryTimeout"));
int m_que=atoi(m_buffer);
//{{AFX_DATA_INIT(CMyPropertyPage8)
m_maxmtu=m_max;
m_ttl =m_tl;
m_receive =m_rec;
m_querytime=m_que;
m_files =0;
m_folders= 0;
m_clear =FALSE;
m_extname=_T("");
m_linkfile=_T("");
m_foot = _T("");
m_menu = _T("");
//}}AFX_DATA_INIT
m_changed=FALSE;
}
CMyPropertyPage8::~CMyPropertyPage8()
{
}
void CMyPropertyPage8::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyPropertyPage8)
DDX_Control(pDX, IDC_RIGHT, m_ctrl2);
DDX_Control(pDX, IDC_DEFAULT, m_ctrl1);
DDX_Control(pDX, IDC_FILELINKLIST, m_linklist);
DDX_Control(pDX, IDC_BROWSE, m_browse);
DDX_Control(pDX, IDC_LINK, m_link);
DDX_Control(pDX, IDC_PATHNUMBER, m_pathcache);
DDX_Control(pDX, IDC_FOLDERNUMBER, m_namecache);
DDX_Control(pDX, IDC_EFFECT, m_effect);
DDX_Text(pDX, IDC_MAXMTU, m_maxmtu);
DDV_MinMaxInt(pDX, m_maxmtu, 0, 65535);
DDX_Text(pDX, IDC_TTL, m_ttl);
DDV_MinMaxInt(pDX, m_ttl, 0, 255);
DDX_Text(pDX, IDC_RECEIVEWINDOW, m_receive);
DDV_MinMaxInt(pDX, m_receive, 0, 65535);
DDX_Text(pDX, IDC_QUERYTIME, m_querytime);
DDV_MinMaxInt(pDX, m_querytime, 0, 65535);
DDX_Text(pDX, IDC_FILENUMBER, m_files);
DDV_MinMaxInt(pDX, m_files, 1, 500);
DDX_Text(pDX, IDC_FOLDERS, m_folders);
DDV_MinMaxInt(pDX, m_folders, 1, 20000);
DDX_Check(pDX, IDC_CLEAREMPTYDIR, m_clear);
DDX_Text(pDX, IDC_EXTNAME, m_extname);
DDX_Text(pDX, IDC_LINKTOFILE, m_linkfile);
DDX_Text(pDX, IDC_FOOTNAME, m_foot);
DDX_Text(pDX, IDC_MENUNAME, m_menu);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyPropertyPage8, CPropertyPage)
//{{AFX_MSG_MAP(CMyPropertyPage8)
ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
ON_BN_CLICKED(IDC_DELETESTART, OnDeleteLink)
ON_BN_CLICKED(IDC_DEFAULT, OnDefault)
ON_BN_CLICKED(IDC_EFFECT, OnEffect)
ON_BN_CLICKED(IDC_DESKTOP, OnDesktop)
ON_BN_CLICKED(IDC_MOBILE, OnMobile)
ON_BN_CLICKED(IDC_SERVER, OnServer)
ON_EN_CHANGE(IDC_MAXMTU, OnChangeMaxmtu)
ON_EN_CHANGE(IDC_QUERYTIME, OnChangeQuerytime)
ON_EN_CHANGE(IDC_RECEIVEWINDOW, OnChangeReceivewindow)
ON_EN_CHANGE(IDC_TTL, OnChangeTtl)
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_RIGHT, OnRight)
ON_EN_CHANGE(IDC_FILENUMBER, OnChangeFilenumber)
ON_EN_CHANGE(IDC_FOLDERS, OnChangeFolders)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_EN_CHANGE(IDC_EXTNAME, OnChangeExtname)
ON_NOTIFY(NM_RCLICK, IDC_FILELINKLIST, OnRclickFilelinklist)
ON_NOTIFY(LVN_KEYDOWN, IDC_FILELINKLIST, OnKeydownFilelinklist)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_FILELINKLIST, OnColumnclickFilelinklist)
ON_EN_CHANGE(IDC_LINKTOFILE, OnChangeLinktofile)
ON_EN_CHANGE(IDC_FOOTNAME, OnChangeFootname)
ON_EN_CHANGE(IDC_MENUNAME, OnChangeMenuname)
ON_BN_CLICKED(IDC_LINK, OnLink)
ON_BN_CLICKED(IDC_CLEAREMPTYDIR, OnClearemptydir)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CMyPropertyPage8::OnDefault()
{
m_maxmtu=1500;
m_ttl =32;
m_receive=8192;
m_querytime=750;
switch(m_platmode)
{
case 1:
m_files =32;
m_folders=677;
break;
case 2:
m_files =16;
m_folders=337;
break;
case 3:
m_files =64;
m_folders=2729;
break;
}
UpdateData(FALSE);
OnChangeFilenumber();
OnChangeFolders();
OnEffect();
}
void CMyPropertyPage8::OnEffect()
{
UpdateData(TRUE);
COrganizeInifile m_ini;
CString m_value;
m_value.Format("%d",m_maxmtu);
m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_MTUpath,_T("MaxMTU"),m_value);
m_value.Format("%d",m_ttl);
m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_Otherpath,_T("DefaultTTL"),m_value);
m_value.Format("%d",m_receive);
m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_Otherpath,_T("DefaultRcvWindow"),m_value);
m_value.Format("%d",m_querytime);
m_ini.CreateStringKey(HKEY_LOCAL_MACHINE,m_Otherpath,_T("NameSrvQueryTimeout"),m_value);
CString m_path;
switch(m_platmode)
{
case 1:
m_path=m_FilePath+_T("\\Desktop");
break;
case 2:
m_path=m_FilePath+_T("\\Mobile");
break;
case 3:
m_path=m_FilePath+_T("\\Server");
break;
}
m_ini.CreateBinaryKey(HKEY_LOCAL_MACHINE,m_path,_T("NameCache"),(long)m_files);
m_ini.CreateBinaryKey(HKEY_LOCAL_MACHINE,m_path,_T("PathCache"),(long)m_folders);
ToSystemIni();
m_changed=FALSE;
EnablePanel();
}
void CMyPropertyPage8::OnDesktop()
{
m_platmode=1;
m_changed=TRUE;
EnablePanel();
}
void CMyPropertyPage8::OnMobile()
{
m_platmode=2;
m_changed=TRUE;
EnablePanel();
}
void CMyPropertyPage8::OnServer()
{
m_platmode=3;
m_changed=TRUE;
EnablePanel();
}
void CMyPropertyPage8::OnChangeMaxmtu()
{
m_changed=TRUE;
EnablePanel();
}
void CMyPropertyPage8::OnChangeQuerytime()
{
m_changed=TRUE;
EnablePanel();
}
void CMyPropertyPage8::OnChangeReceivewindow()
{
m_changed=TRUE;
EnablePanel();
}
void CMyPropertyPage8::OnChangeTtl()
{
m_changed=TRUE;
EnablePanel();
}
void CMyPropertyPage8::ShowMessage()
{
m_files=m_namecache.GetPos();
m_folders=m_pathcache.GetPos();
UpdateData(FALSE);
}
void CMyPropertyPage8::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
m_changed=TRUE;
EnablePanel();
switch(nSBCode)
{
case SB_LEFT:
ShowMessage();
break;
case SB_ENDSCROLL:
ShowMessage();
break;
case SB_LINELEFT:
ShowMessage();
break;
case SB_LINERIGHT:
ShowMessage();
break;
case SB_PAGELEFT:
ShowMessage();
break;
case SB_PAGERIGHT:
ShowMessage();
break;
case SB_RIGHT:
ShowMessage();
break;
case SB_THUMBPOSITION:
ShowMessage();
break;
case SB_THUMBTRACK:
ShowMessage();
break;
}
CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CMyPropertyPage8::InitPanel()
{
CWinApp* pApp = AfxGetApp();
cil1.Create(32,32,TRUE,2,2);
cil1.Add(pApp->LoadIcon(IDI_MALE));
cil1.Add(pApp->LoadIcon(IDI_FEMALE));
m_linklist.SetImageList(&cil1,LVSIL_NORMAL);
cil2.Create(16,16,TRUE,2,2);
cil2.Add(pApp->LoadIcon(IDI_MALE));
cil2.Add(pApp->LoadIcon(IDI_FEMALE));
m_linklist.SetImageList(&cil2,LVSIL_SMALL);
LV_COLUMN lvc;
lvc.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvc.fmt=LVCFMT_LEFT;
char *caption[]={"扩展名","被关联的程序或外壳命令"};
int subitem[]={80,400};
for(int i=0;i<2;i++)
{
lvc.pszText=caption[i];
lvc.iSubItem=i;
lvc.cx=subitem[i];
m_linklist.InsertColumn(i,&lvc);
}
AllLinkToList();
m_linklist.SetBkColor(RGB(0,128,128));
m_linklist.SetTextColor(RGB(255,255,0));
m_linklist.SetTextBkColor(RGB(0,128,128));
GetFileSystem();
UpdateData(FALSE);
}
BOOL CMyPropertyPage8::FileExist(CString m_file)
{
BOOL ret=FALSE;
if(m_file==_T(""))
return ret;
HANDLE file=CreateFile(m_file,0,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(file!=INVALID_HANDLE_VALUE)
{
CloseHandle(file);
ret=TRUE;
}
return ret;
}
void CMyPropertyPage8::EnablePanel()
{
UpdateData(TRUE);
BOOL m_enable=(m_extname!=_T(""));
m_browse.EnableWindow(m_enable);
m_enable=m_enable && (m_foot!=_T("")) && (m_menu!=_T(""));
m_link.EnableWindow(m_enable && FileExist(m_linkfile));
m_effect.EnableWindow(m_changed);
}
void CMyPropertyPage8::ResetToDefault()
{
m_maxmtu=1500;
m_ttl =32;
m_receive=8192;
m_querytime=750;
UpdateData(FALSE);
}
void CMyPropertyPage8::SetToRegistry()
{
COrganizeInifile m_ini;
}
BOOL CMyPropertyPage8::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_tooltip.Create(this);
m_tooltip.Activate(TRUE);
m_tooltip.AddTool(GetDlgItem(IDC_MAXMTU),"最大MTU单元");
m_tooltip.AddTool(GetDlgItem(IDC_TTL),"TTL数目");
m_tooltip.AddTool(GetDlgItem(IDC_RECEIVEWINDOW),"接收缓冲区大小");
m_tooltip.AddTool(GetDlgItem(IDC_QUERYTIME),"通讯查询时间");
m_tooltip.AddTool(GetDlgItem(IDC_DESKTOP),"如果是台式机,请选此项");
m_tooltip.AddTool(GetDlgItem(IDC_MOBILE),"如果是便携机,请选此项");
m_tooltip.AddTool(GetDlgItem(IDC_SERVER),"如果是服务器,请选此项");
m_tooltip.AddTool(GetDlgItem(IDC_FILENUMBER),"系统缓冲文件数");
m_tooltip.AddTool(GetDlgItem(IDC_FOLDERS),"系统缓冲搜索路径数");
m_tooltip.AddTool(GetDlgItem(IDC_FOLDERNUMBER),"系统缓冲文件数");
m_tooltip.AddTool(GetDlgItem(IDC_PATHNUMBER),"系统缓冲搜索路径数");
m_tooltip.AddTool(GetDlgItem(IDC_DEFAULT),"Windows系统默认值(并非最优)");
m_tooltip.AddTool(GetDlgItem(IDC_RIGHT),"比较好的设置");
m_tooltip.AddTool(GetDlgItem(IDC_EFFECT),"设置到系统(重新启动有效)");
m_tooltip.AddTool(GetDlgItem(IDC_CLEAREMPTYDIR),"退出时清除空目录和空文件(费时较长)");
m_tooltip.AddTool(GetDlgItem(IDC_LINK),"将指定扩展名关联到指定可执行程序");
m_tooltip.AddTool(GetDlgItem(IDC_EXTNAME),"指定扩展名");
m_tooltip.AddTool(GetDlgItem(IDC_LINKTOFILE),"被关联的可执行文件");
m_tooltip.AddTool(GetDlgItem(IDC_FOOTNAME),"Windows资源管理器中显示的文件类型名");
m_tooltip.AddTool(GetDlgItem(IDC_MENUNAME),"Windows资源管理器中右键菜单名");
m_tooltip.AddTool(GetDlgItem(IDC_BROWSE),"寻找可执行文件");
m_clear =m_sheet->m_ClearEmpty;
InitPanel();
EnablePanel();
return TRUE;
}
void CMyPropertyPage8::GetDevicePath()
{
char m_key[200]="Enum\\Root\\Net",m_buffer[255];
char m_name[200],m_this[100];
HKEY m_hkey;
DWORD m_namelen=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);
COrganizeInifile m_ini;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_key,0,KEY_ALL_ACCESS,&m_hkey)==ERROR_SUCCESS)
{
m_namelen=200;
memset(m_name,0,200);
while(RegEnumKey(m_hkey,m_index,m_name,m_namelen)==ERROR_SUCCESS)
{
m_index++;
wsprintf(m_buffer,"%s\\%s",m_key,m_name);
strcpy(m_this,m_ini.GetStringKey(HKEY_LOCAL_MACHINE,m_buffer,"DeviceDesc"));
if(strcmp(m_this,"拨号网络适配器")==0)
{
strcat(m_buffer,"\\Bindings");
DWORD m_datalen=200;
DWORD m_thisindex=0;
char m_data[200];
m_namelen=200;
memset(m_name,0,200);
memset(m_data,0,200);
HKEY m_thiskey=0;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_buffer,0,KEY_ALL_ACCESS,&m_thiskey)==ERROR_SUCCESS)
{
while(RegEnumValue(m_thiskey,m_thisindex,m_name,&m_namelen,NULL,&m_attr,(LPBYTE)m_data,&m_datalen)==ERROR_SUCCESS)
{
if(strstr(m_name,"MSTCP")!=0)
break;
m_thisindex++;
m_namelen=200;
m_datalen=200;
memset(m_data,0,200);
memset(m_name,0,200);
}
RegCloseKey(m_thiskey);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -