📄 kyjxexam2006sp3.cpp
字号:
// KYJXExam2006sp3.cpp : 定义应用程序的类行为。
//
#include "stdafx.h"
#include "KYJXExam2006sp3.h"
#include "KYJXExam2006sp3Dlg.h"
#include ".\kyjxexam2006sp3.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CKYJXExam2006sp3App
BEGIN_MESSAGE_MAP(CKYJXExam2006sp3App, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CKYJXExam2006sp3App 构造
CKYJXExam2006sp3App::CKYJXExam2006sp3App()
: win_type(0)
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CKYJXExam2006sp3App 对象
CKYJXExam2006sp3App theApp;
// CKYJXExam2006sp3App 初始化
BOOL CKYJXExam2006sp3App::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControls()。否则,将无法创建窗口。
InitCommonControls();
CWinApp::InitInstance();
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
// 初始化 OLE 库
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("教之初考试系统无盘站专用补丁3.0"));
::CreateMutex(NULL,TRUE,m_pszExeName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("程序已经启动!");
return FALSE;
}
//设置自动启动
char filename[64];
GetModuleFileName(0,filename,64);
HKEY hKey;
::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_WRITE,&hKey);
if(atoi(theApp.ReadRegeditPath("AutoBoot")))//读取是否自动启动
::RegSetValueEx(hKey,"KYJXExam2006sp3",0,REG_SZ,(BYTE*)filename,64);
else
{
::RegSetValueEx(hKey,"KYJXExam2006sp3",0,REG_SZ,(BYTE*)filename,64);
::RegDeleteValue(hKey,"KYJXExam2006sp3");
}
::RegCloseKey(hKey);
//
CKYJXExam2006sp3Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用“确定”来关闭
//对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用“取消”来关闭
//对话框的代码
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}
CString CKYJXExam2006sp3App::ReadRegeditPath(CString value)
{
CString str(_T(""));
HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
//打开与路径 data_Set相关的hKEY
LPCTSTR data_Set="Software\\Microsoft\\KYJXExam2006sp3\\";
//访问注册表,hKEY则保存此函数所打开的键的句柄
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行
return CString();
//查询有关的数据
LPBYTE dir_Get=new BYTE[MAX_PATH];//定义
DWORD type_1=REG_SZ;//定义数据类型
DWORD cbData_1=MAX_PATH;//定义数据长度
long ret1=::RegQueryValueEx(hKEY,value,NULL,&type_1,dir_Get,&cbData_1);
if(ret1!=ERROR_SUCCESS)
return CString();
else
str=CString(dir_Get);
::RegCloseKey(hKEY);
return str;
}
int CKYJXExam2006sp3App::ExitInstance()
{
//设置自动启动
char filename[64];
GetModuleFileName(0,filename,64);
HKEY hKey;
::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_WRITE,&hKey);
if(atoi(theApp.ReadRegeditPath("AutoBoot")))//读取是否自动启动
::RegSetValueEx(hKey,"KYJXExam2006sp3",0,REG_SZ,(BYTE*)filename,64);
else
{
::RegSetValueEx(hKey,"KYJXExam2006sp3",0,REG_SZ,(BYTE*)filename,64);
::RegDeleteValue(hKey,"KYJXExam2006sp3");
}
::RegCloseKey(hKey);
//
return CWinApp::ExitInstance();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -