📄 pppserverdlg.cpp
字号:
delete mstr;
return tmpstr;
}
CString GetSoftWareRegisterCodeEx(CString serial,int no)
{
CString sn;
sn=serial;
if(sn.GetLength()<=0||sn.GetLength()%2!=0)
{
return TEXT("1234567890");
}
//全部为大写
//
sn.MakeUpper();
//
CString tmpstr;
int len;
len=sn.GetLength();
//0,1,2,3,4,5,6,7,8,9
//1,8,2,5,0,3,9,6,4,7
//3,9,6,4,7,0,5,2,1,8 ex
//TCHAR code[11]={_T('3'),_T('9'),_T('6'),_T('4'),_T('7'),
// _T('0'),_T('5'),_T('2'),_T('1'),_T('8'),
// _T('\0')
//
// };
//0,1,2,3,4,5,6,7,8,9
//3,9,6,4,7,0,5,2,1,8 ex --exe
//密码=[各项求和后模10]+[原码]+[各项求积后模10]
//1:0,1,2,3,4,5,6,7,8,9 ex
//2:4,2,1,0,6,5,3,9,8,7 ex
//3:2,3,1,0,6,5,4,9,8,7 ex
//4:3,2,1,0,6,5,4,9,8,7 ex
//5:7,2,1,0,5,4,3,9,8,6 ex
//6:5,2,1,0,6,4,3,9,8,7 ex
//7:6,2,1,0,5,4,3,9,8,7 ex
//8:1,3,2,0,6,5,4,9,8,7 ex
//9:8,2,1,0,5,4,3,9,7,6 ex
//10:9,2,1,0,5,4,3,8,7,6 ex
//11:3,9,6,4,7,0,5,2,1,8 ex--解除
//TCHAR code[11]={_T('3'),_T('9'),_T('6'),_T('4'),_T('7'),
// _T('0'),_T('5'),_T('2'),_T('1'),_T('8'),
// _T('\0')
//
// };
TCHAR code[11][11]=
{
//1:
{_T('0'),_T('1'),_T('2'),_T('3'),_T('4'),_T('5'),_T('6'),_T('7'),_T('8'),_T('9'),_T('\0')},
//2:
{_T('4'),_T('2'),_T('1'),_T('0'),_T('6'),_T('5'),_T('3'),_T('9'),_T('8'),_T('7'),_T('\0')},
//3:
{_T('2'),_T('3'),_T('1'),_T('0'),_T('6'),_T('5'),_T('4'),_T('9'),_T('8'),_T('7'),_T('\0')},
//4:
{_T('3'),_T('2'),_T('1'),_T('0'),_T('6'),_T('5'),_T('4'),_T('9'),_T('8'),_T('7'),_T('\0')},
//5:
{_T('7'),_T('2'),_T('1'),_T('0'),_T('5'),_T('4'),_T('3'),_T('9'),_T('8'),_T('6'),_T('\0')},
//6:
{_T('5'),_T('2'),_T('1'),_T('0'),_T('6'),_T('4'),_T('3'),_T('9'),_T('8'),_T('7'),_T('\0')},
//7:
{_T('6'),_T('2'),_T('1'),_T('0'),_T('5'),_T('4'),_T('3'),_T('9'),_T('8'),_T('7'),_T('\0')},
//8:
{_T('1'),_T('3'),_T('2'),_T('0'),_T('6'),_T('5'),_T('4'),_T('9'),_T('8'),_T('7'),_T('\0')},
//9:
{_T('8'),_T('2'),_T('1'),_T('0'),_T('5'),_T('4'),_T('3'),_T('9'),_T('7'),_T('6'),_T('\0')},
//10:
{_T('9'),_T('2'),_T('1'),_T('0'),_T('5'),_T('4'),_T('3'),_T('8'),_T('7'),_T('6'),_T('\0')},
//free:
{_T('3'),_T('9'),_T('6'),_T('4'),_T('7'),_T('0'),_T('5'),_T('2'),_T('1'),_T('8'),_T('\0')}
};
//密码=[各项求积后模10]+[原码]+[各项求和后模10]
long he,ji;
he=0;
ji=1;
TCHAR ch,ss,mm;
TCHAR *mstr;
ss=0;
mm=0;
mstr=new TCHAR[len+2+1];
int count;
count=0;
for(int i=0;i<len;i++)
{
ch=sn.GetAt(i);
if(ch>=_T('A')&&ch<=_T('F'))
{
ss=ch-_T('A');
}
else
{
ss=ch-_T('0');
}
//he,ji
if(ss!=0)
{
he=he+ss;
ji=ji*ss;
}
//
if(ss!=0)
{
mm=code[no][ss];
mstr[count+1]=mm;
count++;
}
//.....
}
//he->ji
ss=labs(he)%10;
mm=code[no][ss];
//mstr[0]=mm;
mstr[count+1]=mm;
//ji->he
ss=labs(ji)%10;
mm=code[no][ss];
//mstr[count+1]=mm;
mstr[0]=mm;
//
mstr[count+2]=_T('\0');
//
tmpstr=mstr;
//
delete mstr;
return tmpstr;
}
HINSTANCE hinstance;
//for menu
HWND ghCB;
//for status
//HWND hStatusWindow;
//for toolbar
HWND hToolsWindow;
//static UINT indicators[] =
//{
// ID_SEPARATOR, // status line indicator
// ID_INDICATOR_CAPS
//};
// const DWORD dwAdornmentFlags = 0; // exit button
//
bool m_show_demo_flag;
bool m_show_main_flag;
bool m_hotkey_flag;
bool m_demo_hotkey_flag;
WORD MY_HOTKEY;
WORD MY_DEMO_HOTKEY;
//#define ITEM_APPEND_ID 20010
//#define ITEM_INSERT_ID 20011
//#define ITEM_DELETE_ID 20012
SYSTEM_PARAMETER m_system_para;
//
TCHAR tmp_type_str[4][80]={_T("Text"),_T("Picture"),_T("Animation"),_T("Video")};
TCHAR tmp_fun_in_str[MAX_ADD_SHOWWAY][80]={
_T("Random"),
_T("Static"),
_T("Flash"),
_T("Push Down"),
_T("Push Up"),
_T("Scan Down"),
_T("Scan Up"),
_T("Scan Center to UpDown"),
_T("Scan UpDown to Center"),
_T("Scan Right"),
_T("Scan Left"),
_T("Scan Center to LeftRight"),
_T("Scan LeftRigth to Center"),
_T("Vertical Right Blind"),
_T("Vertical Left Blind"),
_T("Horizontal Down Blind"),
_T("Horizontal Up Blind"),
_T("Scan/Corner1"),
_T("Scan/Corner2"),
_T("Scan/Corner3"),
_T("Scan/Corner4"),
//
_T("Push/Corner1"),
_T("Push/Corner2"),
_T("Push/Corner3"),
_T("Push/Corner4"),
_T("Rain"),
_T("Zoom IN"),
_T("Zoom OUT"),
_T("Push Left"),
_T("Push Right"),
// _T("Compress Left"),
// _T("Compress Right"),
// _T("Compress Up"),
// _T("Compress Down"),
_T("Half Fan"),
_T("Mosaic"),
_T("Full FAN"),
_T("Diamond"),
_T("Empty"),
_T("---------------")
};
TCHAR tmp_fun_out_str[MAX_ADD_SHOWWAY-1][80]={
_T("Random"),
_T("Static"),
_T("Flash"),
_T("Push Down"),
_T("Push Up"),
_T("Scan Down"),
_T("Scan Up"),
_T("Scan Center to UpDown"),
_T("Scan UpDown to Center"),
_T("Scan Right"),
_T("Scan Left"),
_T("Scan Center to LeftRight"),
_T("Scan LeftRigth to Center"),
_T("Vertical Right Blind"),
_T("Vertical Left Blind"),
_T("Horizontal Down Blind"),
_T("Horizontal Up Blind"),
_T("Scan/Corner1"),
_T("Scan/Corner2"),
_T("Scan/Corner3"),
_T("Scan/Corner4"),
//
_T("Push/Corner1"),
_T("Push/Corner2"),
_T("Push/Corner3"),
_T("Push/Corner4"),
//_T("Rain"),
_T("Zoom IN"),
_T("Zoom OUT"),
_T("Push Left"),
_T("Push Right"),
// _T("Compress Left"),
// _T("Compress Right"),
// _T("Compress Up"),
// _T("Compress Down"),
_T("Half Fan"),
_T("Mosaic"),
_T("Full FAN"),
_T("Diamond"),
_T("Empty"),
_T("----------------")
};
CPlayTableData DATA;
bool m_all_run_flag;
//UINT m_find_timer;
//DWORD m_find_count=0;
BOOL m_software_registered_flag=FALSE;
//
int m_edit_type;//-1:无效,0-Append ,1-Insert(Before),Modify:2
CPlayTableData m_cur_data;
//draw text
CList<LOGFONT,LOGFONT&> m_all_logfont;
//
int CALLBACK GetSystemAllFontname(CONST LOGFONT *lplf,
CONST TEXTMETRIC *lpntm,
DWORD nFontType, LPARAM lParam)
{
// CList<LOGFONT,LOGFONT&> *fontlist=(CList<LOGFONT,LOGFONT&> *) lParam; ///???
//pcombobox->AddString(lplf->lfFaceName);
//
// sFamilyCnt++;
LOGFONT lg;
lg=*lplf;
m_all_logfont.AddTail(lg);
return 1;
}
/*
//在Wince环境中用程序创建快捷方式
TCHAR szDistictPath[MAX_PATH];// full path of shortcut
TCHAR szSourcePath[MAX_PATH];// full path of source file
//_tcscpy(szDistictPath, _T("\\windows\\桌面\\PPPlayer.lnk"));
_tcscpy(szDistictPath, _T("\\windows\\Startup\\PPPlayer.lnk"));
_tcscpy(szSourcePath, _T("\\PPPlayer.exe"));
if(SHCreateShortcut(szDistictPath, szSourcePath) != FALSE)
{
::MessageBox(m_hWnd, _T("Succeeded in create shortcut!"), _T(""), MB_OK|MB_APPLMODAL);
}
*/
/*
注意szSourcePath 的写法,由于MSDN的疏忽,很多人会被误导以为直接写路径就行了,
实际上,当源路径含有空格的时候,必须在路径两端再次用双引号括起来,
否则建立的快捷方式将是不可执行的损坏格式。 双引号" "在程序中表现为 \" \"
*/
//watchdog
void OutRegisterFun(DWORD addr,DWORD value)
{
PHYSICAL_ADDRESS io;
io.LowPart=addr;
io.HighPart=0;
DWORD *ptr;
ptr=(DWORD *)MmMapIoSpace(io,4,FALSE);
WRITE_REGISTER_ULONG(ptr,value);
}
ULONG InRegisterFun(DWORD addr)
{
PHYSICAL_ADDRESS io;
io.LowPart=addr;
io.HighPart=0;
DWORD *ptr;
ptr=(DWORD *)MmMapIoSpace(io,4,FALSE);
return(READ_REGISTER_ULONG(ptr));
}
//
BOOL m_sendfile_ready_flag=FALSE;
TCHAR m_savefilename[256];
SENDFILEHEAD m_filehead;
//char Buffer[4096];
char Buffer[SOCKETBUFFSIZE];
//
//CString m_savepathname;
//该变量为系统保存数据的根目录video
//注意:1.文本文件保存在text目录下
// 2.图片文件(bmp,jpg,gif) 保存在pic目录下
// 3.GIF动画文件(*.gif) 保存在ani目录下
// 4.视频文件(*.wmv,*.mpg(mpg-1),*.asf等)保存在video目录下
//VC++只提供了删除一个空目录的函数,而在实际应用中往往希望删除其下有很多子目录与文件的目录。
//为了实现这一功能,我编写了DeleteDirectory 函数,它可以实现这一功能。
//
//函数原型:BOOL DeleteDirectory(char *DirName);
//返回值:成功删除时返回TRUE,否则返回FALSE
//参数DirName为要删除的目录名,必须为绝对路径名,如“c:\\temp"。
/*
//函数定义如下:
BOOL DeleteDirectory(LPCTSTR DirName)
{
CFileFind tempFind;//声明一个CFileFind类变量,以用来搜索
TCHAR tempFileFind[256];//用于定义搜索格式
_strintf(tempFileFind,_T("%s\\*.*"),DirName);//匹配格式为*.*,即该目录下的所有文件
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);//查找第一个文件
while(IsFinded)
{ //递归搜索其他的文件
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())//如果不是"."目录
{
char foundFileName[256];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(256));
if(tempFind.IsDirectory())//如果是目录,则递归地调用
{
TCHAR tempDir[256];
_stprintf(tempDir,_T("%s\\%s"),DirName,foundFileName);
DeleteDirectory(tempDir);
}
else//如果是文件则直接删除之
{
TCHAR tempFileName[256];
_stprintf(tempFileName,_T("%s\\%s"),DirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
//删除目录
if(!RemoveDirectory(DirName))
{
//MessageBox(0,"删除目录失败!","警告信息",MB_OK);
return FALSE;
}
return TRUE;
}*/
//函数定义如下:
BOOL DeleteDirectory(LPCTSTR DirName)
{
HANDLE hSearch;
WIN32_FIND_DATA FileData;
// TCHAR szNewPath[MAX_PATH];
BOOL bFinished=FALSE;
TCHAR tempFileFind[256];//用于定义搜索格式
_stprintf(tempFileFind,TEXT("%s\\*.*"),DirName);//匹配格式为*.*,即该目录下的所有文件
hSearch =FindFirstFile(tempFileFind,&FileData);//查找第一个文件
if(hSearch==INVALID_HANDLE_VALUE)
{
//删除目录
if(!RemoveDirectory(DirName))
{
//MessageBox(0,"删除目录失败!","警告信息",MB_OK);
return FALSE;
}
else
return TRUE;
}
while(!bFinished)
{
//递归搜索其他的文件
//IsFinded=(BOOL)tempFind.FindNextFile();
if(_tcscmp(FileData.cFileName,TEXT("."))!=0&&_tcscmp(FileData.cFileName,TEXT(".."))!=0)
//if(!tempFind.IsDots())//如果不是".",".."目录
{
TCHAR foundFileName[256];
_tcscpy(foundFileName,FileData.cFileName);
if(FileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)//如果是目录,则递归地调用
{
TCHAR tempDir[256];
_stprintf(tempDir,TEXT("%s\\%s"),DirName,foundFileName);
DeleteDirectory(tempDir);
}
else//如果是文件则直接删除之
{
TCHAR tempFileName[256];
_stprintf(tempFileName,TEXT("%s\\%s"),DirName,foundFileName);
DeleteFile(tempFileName);
}
}
//
if(!FindNextFile(hSearch,&FileData))
{
bFinished=TRUE;
}
}
//tempFind.Close();
if(!FindClose(hSearch))
{
return FALSE;
}
//删除目录
if(!RemoveDirectory(DirName))
{
//MessageBox(0,"删除目录失败!","警告信息",MB_OK);
return FALSE;
}
return TRUE;
}
//怎样一次创建一个多级目录
//如下,调用方式 WriteDirectory( strPath);
// 参数为要创建的目录全路径名,最后没有"\"。
//详细说明参见:http://go18.163.com/~freecode/vc/sharecode/source/WriteDir.html
// #include "stdafx.h"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -