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

📄 kyjxexam2006sp3.cpp

📁 对教之初考试系统的补丁,适用于无盘站.在教之初考试系统的4.5版中,出现了一些管理员操作方面的不足之处,于是予补充.
💻 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 + -