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

📄 ontcdlg.cpp

📁 也是一款定时关机的程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//	inf=m_dir+"\\OnTime.exe";
	char inf[80];
	GetModuleFileName(NULL,inf,80);//取得本应用程序的路径
	::RegSetValueEx(key,"OnTC",0L,REG_SZ,(CONST BYTE *)inf,1);
	RegWrite();
}

void COnTCDlg::OnSet() 
{
	m_set_flag=TRUE;
	CSetDlg dlg;
	{
		dlg.m_default.Format("%d",m_data[0]-32);
		dlg.m_late.Format("%d",m_data[1]-32);
		dlg.m_min=m_data[2]-32;
		dlg.m_mode=m_data[3]-32;
		dlg.m_record=m_data[4]-32;
	}
	if(dlg.DoModal()==IDOK)
	{
		HKEY key=HKEY_LOCAL_MACHINE;
//		LPCTSTR inf;
		::RegOpenKeyEx(key,"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0L,KEY_ALL_ACCESS, &key);
		m_data[0]=atoi(dlg.m_default)+32;
		m_data[1]=atoi(dlg.m_late)+32;
		m_data[2]=dlg.m_min+32;
		m_data[3]=dlg.m_mode+32;
		m_data[4]=dlg.m_record+32;
		if(dlg.m_record)
		{	
//			inf=m_dir+"\\OnTime.exe";
			char inf[80];
			GetModuleFileName(NULL,inf,80);//取得本应用程序的路径
			::RegSetValueEx(key,"OnTC",0L,REG_SZ,(CONST BYTE *)inf,1);
		}
		else
			::RegDeleteValue(key, "OnTC");
		::RegCloseKey(key);
	}
	dlg.KillTimer(3);
	m_set_flag=FALSE;
}

void COnTCDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	m_data[4]=32;
	m_data[2]=32;
	RegWrite();
	HKEY key=HKEY_LOCAL_MACHINE; 
	::RegOpenKeyEx(key,"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0L,KEY_ALL_ACCESS, &key);
	::RegDeleteValue(key, "OnTC");
	::RegCloseKey(key);
	NOTIFYICONDATA tnid;
	tnid.cbSize = sizeof(NOTIFYICONDATA);
	tnid.hWnd = AfxGetApp()->m_pMainWnd->m_hWnd;
	tnid.uID = IDR_MAINFRAME;
	Shell_NotifyIcon(NIM_DELETE,&tnid);
	CDialog::OnCancel();
}

void COnTCDlg::Close()
{
	KillTimer(1);
	CCloseDlg dlg;
	dlg.DoModal();
	OnCancel();
}

BOOL COnTCDlg::RegRead()//成功则返回0,否则返回非0值
{
	HKEY key=HKEY_USERS;
	DWORD dwDest;
	DWORD dwSize = sizeof (DWORD);
	DWORD dwType;
	int flag=(::RegOpenKeyEx(key,".DEFAULT\\Software\\OnTC", 0L,KEY_ALL_ACCESS, &key));
	if(flag==0)
	{
		::RegQueryValueEx (key, "default", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
		m_data[0] = (int)dwDest+32;
		::RegQueryValueEx (key, "late", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
		m_data[1] = (int)dwDest+32;
		::RegQueryValueEx (key, "min", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
		m_data[2] = (int)dwDest+32;
		::RegQueryValueEx (key, "mode", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
		m_data[3] = (int)dwDest+32;
		::RegQueryValueEx (key, "record", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
		m_data[4] = (int)dwDest+32;
		::RegQueryValueEx (key, "hour", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
		m_data[5] = (int)dwDest+32;
		::RegQueryValueEx (key, "minute", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
		m_data[6] = (int)dwDest+32;
	}
	::RegCloseKey(key);
	return flag;
}

void COnTCDlg::RegWrite()
{
	HKEY key=HKEY_USERS; 
	DWORD dwValue;
	::RegOpenKeyEx(key,".DEFAULT\\Software\\OnTC", 0L,KEY_ALL_ACCESS, &key);
	dwValue=(DWORD)m_data[0]-32;
	::RegSetValueEx(key,"default",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
	dwValue=(DWORD)m_data[1]-32;
	::RegSetValueEx(key,"late",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
	dwValue=(DWORD)m_data[2]-32;
	::RegSetValueEx(key,"min",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
	dwValue=(DWORD)m_data[3]-32;
	::RegSetValueEx(key,"mode",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
	dwValue=(DWORD)m_data[4]-32;
	::RegSetValueEx(key,"record",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
	dwValue=(DWORD)m_data[5]-32;
	::RegSetValueEx(key,"hour",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
	dwValue=(DWORD)m_data[6]-32;
	::RegSetValueEx(key,"minute",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
	LPCTSTR inf=m_alert;
	::RegSetValueEx(key,"string",0L,REG_SZ,(CONST BYTE *)inf,1);
	::RegCloseKey(key);
}

void COnTCDlg::OnDatetimechangeDatetimepicker(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData(TRUE);
	m_data[5]=m_close_time.GetHour()+32;
	m_data[6]=m_close_time.GetMinute()+32;
	m_rem.Format("%d",(m_close_time.GetTime()-m_now)/60+1);
	RegWrite();
	UpdateData(FALSE);
	*pResult = 0;
}

void COnTCDlg::OnTimer(UINT nIDEvent) 
{
	CString OwnWinText;GetWindowText(OwnWinText);
		CWnd *p=GetForegroundWindow();
		if(p)
			p->GetWindowText(m_WindowText);
		else
			m_WindowText=OwnWinText;
		if(m_WindowText.Compare(OwnWinText))
		{
			if(m_hidetime++>5)
				OnHide();
		}
		else m_hidetime=0;
/////////////////////////////////////////
	
	time(&m_now);m_ctime=m_now;
	m_static_time=m_ctime.Format("%c");
	m_rem.Format("%d",(m_close_time.GetTime()-m_now+59)/60);
	UpdateData(FALSE);
	if(atoi(m_rem)<=0)
		OnClose();
	CDialog::OnTimer(nIDEvent);
}

void COnTCDlg::OnMenuSet()
{
	m_barter_flag=TRUE;
	CBarterDlg dlg;
	if(m_lock&&!IsWindowVisible())
	{
		if(dlg.DoModal()==IDOK)
			OnSet();
	}
	else
		OnSet();
	m_barter_flag=FALSE;
}
void COnTCDlg::OnMyicon(WPARAM wParam, LPARAM lParam)
{
	UINT uMouseMsg;
	uMouseMsg = (UINT) lParam;
	if(!m_lock)
		if(uMouseMsg == WM_LBUTTONDOWN)
		{
			if(IsWindowVisible())
			{
				ShowWindow(SW_HIDE);
			}
			else
			{
				ShowWindow(SW_SHOW);
			}
		}
/////////////////////////////////////
	if(uMouseMsg == WM_LBUTTONDBLCLK)
		m_lock=TRUE;
/////////////////////////////////////
	if(uMouseMsg == WM_RBUTTONUP)
	{
		CMenu menu;
		menu.CreatePopupMenu();
		if(m_lock)
			menu.AppendMenu(MF_STRING,IDM_LOCK,"任务栏解锁");
		else
			menu.AppendMenu(MF_STRING,IDM_LOCK,"任务栏上锁");
		menu.AppendMenu(MF_STRING,IDM_BARTER,"修改密码");
		menu.AppendMenu(MF_STRING,IDM_SET,"程序设置");
		if(IsWindowVisible())
			menu.AppendMenu(MF_STRING,IDC_HIDE,"隐藏窗口");
		else
			menu.AppendMenu(MF_STRING,IDM_SHOW,"显示窗口");
		menu.AppendMenu(MF_STRING,IDM_OTHER_EXIT,"退出程序");
		/////////////
		if(m_otherexit_flag)
			menu.EnableMenuItem(IDM_OTHER_EXIT,MF_GRAYED);
		else
			menu.EnableMenuItem(IDM_OTHER_EXIT,MF_ENABLED);
		if(m_lock_flag)
			menu.EnableMenuItem(IDM_LOCK,MF_GRAYED);
		else
			menu.EnableMenuItem(IDM_LOCK,MF_ENABLED);
		if(m_barter_flag)
			menu.EnableMenuItem(IDM_BARTER,MF_GRAYED);
		else
			menu.EnableMenuItem(IDM_BARTER,MF_ENABLED);
		if(m_set_flag)
			menu.EnableMenuItem(IDM_SET,MF_GRAYED);
		else
			menu.EnableMenuItem(IDM_SET,MF_ENABLED);
	if(!m_barter_flag)	menu.TrackPopupMenu(TPM_LEFTALIGN,740,580,this);
		
	}
/////////////////////////ADD
///////////////////////////END
	NOTIFYICONDATA tnid;
	tnid.cbSize = sizeof(NOTIFYICONDATA);
	tnid.hWnd = AfxGetApp()->m_pMainWnd->m_hWnd;
	tnid.uID = IDR_MAINFRAME;
	tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
	tnid.uCallbackMessage = MYICON;
	tnid.hIcon = m_hIcon;
	CString iconstr,mode;
	if(m_data[3]-32)mode="立即关机";
	else mode="弹出对话框";
	iconstr.Format("%s分后(%d:%d)%s\"%s\"",m_rem,m_close_time.GetHour(),m_close_time.GetMinute(),mode,m_alert);
	lstrcpyn(tnid.szTip, iconstr, sizeof(tnid.szTip));
	Shell_NotifyIcon(NIM_MODIFY,&tnid);

}

void COnTCDlg::OnLock()
{
	m_barter_flag=TRUE;
	if(m_lock)
	{
		CBarterDlg dlg;
		if(dlg.DoModal()==IDOK)
			m_lock=0;
	}
	else
		m_lock=1;
	m_barter_flag=FALSE;
}

void COnTCDlg::OnShow()
{
	m_barter_flag=TRUE;
	CBarterDlg dlg;
	if(m_lock)
	{
		if(dlg.DoModal()==IDOK)
			ShowWindow(SW_SHOW);
	}
	else
		ShowWindow(SW_SHOW);
	m_barter_flag=FALSE;
}

void COnTCDlg::OnOtherExit()
{

	m_barter_flag=TRUE;
	if(m_lock&&!IsWindowVisible())
	{
		if(MessageBox("任务栏处于锁定状态,最好不要退出!\n\n\t真的要退出吗?","退出提问",MB_OKCANCEL|MB_ICONWARNING)==IDOK)
		{
			CBarterDlg dlg;
			if(dlg.DoModal()==IDOK)
				OnCancel();
		}
	}
	else
		OnCancel();
	m_barter_flag=FALSE;
}
void COnTCDlg::OnBarter()
{
	m_barter_flag=TRUE;
	CChangeBarterDlg dlg;
	if(dlg.DoModal()==IDOK)
		MessageBox("密码被成功地修改了,请记住新密码!","密码修改成功",MB_OK|MB_ICONASTERISK);
	else
		MessageBox("密码修改失败","密码修改失败",MB_OK|MB_ICONASTERISK);
	m_barter_flag=FALSE;
}



void CAboutDlg::OnStaticEmail() 
{
	ShellExecute(NULL, "open","mailto:Gaotc@ah163.com", 
	NULL,NULL,SW_SHOWDEFAULT);
}

BOOL CAboutDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	// TODO: Add your message handler code here and/or call default
		
	if(pWnd->GetDlgCtrlID()==IDC_STATIC_EMAIL)
	{
	    SetCursor(AfxGetApp()->LoadCursor(IDC_HAND)); 
	    return TRUE;
	 }
	else
		SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
	return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

void COnTCDlg::OnEndSession(BOOL bEnding)
{
	if(MessageBox("现在你不能关闭计算机,如果强行关机可能导致系统崩溃!\n\n真的要关机吗?","关机警告",MB_OKCANCEL|MB_ICONWARNING)==IDOK)
		((COnTCApp *)AfxGetApp())->m_pMainWnd->SendMessage(WM_CLOSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -