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

📄 shutdowndlg.cpp

📁 很好的代码来看吧!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
int hour,min,sec;
int yhour,ymin,ysec;
float nmin;

	if(m_sNowTime.IsEmpty())
	{
		OnButtonHide();
	}

	CDialog::OnTimer(nIDEvent);

	if(m_IdleOK)
	{
		nmin = (float)((GetTickCount() - IdleUIGetLastInputTime())/1000)/60.00f;
		if(nmin == (float)m_IdleMin && m_IdleMin != 0)
		{
			OnMenuSystem();
		}
	}

	CTime nowtime = CTime::GetCurrentTime();
	m_sNowTime = nowtime.Format(_T("%Y-%m-%d %H:%M:%S"));

	if(m_Check5 == TRUE)
		m_UserTime2 -= CTimeSpan(0, 0, 0, 1);

	UpdateData(FALSE);

	hour = nowtime.GetHour();
	min	 = nowtime.GetMinute();
	sec  = nowtime.GetSecond();

	yhour = m_Time1.GetHour();
	ymin  = m_Time1.GetMinute();
	ysec  = m_Time1.GetSecond();

	if(hour == yhour && (ymin - min) == 1 && m_Check1 == TRUE)
	{
		LockWindow();
	}

	if(hour == yhour && min == ymin && m_Check1 == TRUE)
	{
		OnButtonShutdown();
		return;
	}

	yhour = m_Time2.GetHour();
	ymin  = m_Time2.GetMinute();
	ysec  = m_Time2.GetSecond();

	if(hour == yhour && (ymin - min) == 1 && m_Check2 == TRUE)
	{
		LockWindow();
	}

	if(hour == yhour && min == ymin && m_Check2 == TRUE)
	{
		OnButtonShutdown();
		return;
	}

	yhour = m_Time3.GetHour();
	ymin  = m_Time3.GetMinute();
	ysec  = m_Time3.GetSecond();

	if(hour == yhour && (ymin - min) == 1 && m_Check3 == TRUE)
	{
		LockWindow();
	}

	if(hour == yhour && min == ymin && m_Check3 == TRUE)
	{
		OnButtonShutdown();
		return;
	}
	
	yhour = m_UserTime1.GetHour();
	ymin  = m_UserTime1.GetMinute();
	ysec  = m_UserTime1.GetSecond();

	if(hour == yhour && (ymin - min) == 1 && m_Check4 == TRUE)
	{
		LockWindow();
	}

	if(hour == yhour && min == ymin && m_Check4 == TRUE)
	{
		OnButtonShutdown();
		return;
	}

	yhour = m_UserTime2.GetHour();
	ymin  = m_UserTime2.GetMinute();
	ysec  = m_UserTime2.GetSecond();

	if(yhour == 0 && ymin == 1 && ysec == 0 && m_Check5 == TRUE)
	{
		LockWindow();
	}

	if(yhour == 0 && ymin == 0 && ysec <= 5 && m_Check5 == TRUE)
	{
		OnButtonShutdown();
		return;
	}
}

void CShutDownDlg::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData();

	time_t t = m_Time1.GetTime();
	CString str;
	str.Format("%ld",t);
	AfxGetApp()->WriteProfileString("ShutDown","time1",str);

	*pResult = 0;
}

void CShutDownDlg::OnDatetimechangeDatetimepicker2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData();
	
	time_t t = m_Time2.GetTime();
	CString str;
	str.Format("%ld",t);
	AfxGetApp()->WriteProfileString("ShutDown","time2",str);

	*pResult = 0;
}

void CShutDownDlg::OnDatetimechangeDatetimepicker3(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData();
	
	time_t t = m_Time3.GetTime();
	CString str;
	str.Format("%ld",t);
	AfxGetApp()->WriteProfileString("ShutDown","time3",str);

	*pResult = 0;
}

void CShutDownDlg::OnDatetimechangeDatetimepicker4(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData();
	*pResult = 0;
}

void CShutDownDlg::OnDatetimechangeDatetimepicker5(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData();
	
	*pResult = 0;
}

void CShutDownDlg::OnButtonShutdown() 
{
	ExitWindowsEx(EWX_SHUTDOWN, 0);
}

void CShutDownDlg::OnButtonHide() 
{
NOTIFYICONDATA nid;

	nid.cbSize = sizeof(nid);
	nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
	nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

	strcpy(nid.szTip,"定时关机V1.0");
	nid.uCallbackMessage = WM_USER + 200;
	nid.uID = 10;
	nid.hWnd =m_hWnd;

	Shell_NotifyIcon(NIM_ADD, &nid);

	ShowWindow(SW_HIDE);
	m_IsShow = FALSE;
}

LRESULT CShutDownDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	switch(message)
	{
	case WM_USER + 200:
		if(lParam == WM_LBUTTONDBLCLK)
		{
			if(!m_IsShow)
			{
				ShowWindow(SW_SHOWNORMAL);
				BringWindowToTop();
				m_IsShow = TRUE;
			}
			else
			{
				ShowWindow(SW_HIDE);
				m_IsShow = FALSE;
			}
		}

		if(lParam == WM_RBUTTONDOWN)
		{
			CMenu menu;

			if(!menu.LoadMenu(IDR_MENU_MAIN))	break;
			
			CMenu* pSubMenu = menu.GetSubMenu(0);
			
			if(!pSubMenu)	break;

			if(!m_Cdrom)
			{
				pSubMenu->EnableMenuItem(ID_MENU_OUT,MF_GRAYED);
				pSubMenu->EnableMenuItem(ID_MENU_CLOSE,MF_GRAYED);
			}
			
			if(!m_IdleOK)
				pSubMenu->EnableMenuItem(ID_MENU_IDLEMIN,MF_GRAYED);
		
			CPoint pos;
			GetCursorPos(&pos);
			pSubMenu->TrackPopupMenu(TPM_LEFTALIGN,pos.x,pos.y, this, NULL);
			
			menu.DestroyMenu();
		}
		break;
	}	
	return CDialog::DefWindowProc(message, wParam, lParam);
}

void CShutDownDlg::OnCheck1() 
{
	UpdateData();
	m_Timer1.EnableWindow(m_Check1);
	
	AfxGetApp()->WriteProfileInt("ShutDown","timer1",m_Check1);
}

void CShutDownDlg::OnCheck2() 
{
	UpdateData();
	m_Timer2.EnableWindow(m_Check2);
	AfxGetApp()->WriteProfileInt("ShutDown","timer2",m_Check2);
}

void CShutDownDlg::OnCheck3() 
{
	UpdateData();
	m_Timer3.EnableWindow(m_Check3);
	AfxGetApp()->WriteProfileInt("ShutDown","timer3",m_Check3);
}

void CShutDownDlg::OnCheck4() 
{
	UpdateData();
	m_UserTimer1.EnableWindow(m_Check4);
}

void CShutDownDlg::OnCheck5() 
{
	UpdateData();
	m_UserTimer2.EnableWindow(m_Check5);
}

void CShutDownDlg::OnMenuAbort() 
{
CAboutDlg dlg;
	dlg.DoModal();
}

void CShutDownDlg::OnMenuMain() 
{
	ShowWindow(SW_SHOWNORMAL);
	BringWindowToTop();
	CenterWindow();
	m_IsShow = TRUE;
}

void CShutDownDlg::OnMenuNowshut() 
{
	OnButtonShutdown();
}

void CShutDownDlg::OnMenuReboot() 
{
	ExitWindowsEx(EWX_REBOOT, 0);
}

void CShutDownDlg::OnMenuExit() 
{
	OnOK();	
}

void CShutDownDlg::OnMenuShortcut() 
{
char path[MAX_PATH];
char link[MAX_PATH];
CShortcut shortcut;
SHORTCUTSTRUCT strt;

	memset(path,0,sizeof(path));
	memset(link,0,sizeof(link));

	GetWindowsDirectory(link,MAX_PATH);
	GetCurrentDirectory(MAX_PATH,path);

	wsprintf(link+strlen(link),"%s","\\Start Menu\\Programs\\启动\\定时关机.lnk");
	wsprintf(path+strlen(path),"\\%s.exe",AfxGetApp()->m_pszExeName);

	strt.nIconIndex	= 0;
	strt.nShowCmd	= 0;
	strt.wHotkey	= MAKEWORD((BYTE) 0, (BYTE) 0);
	strt.strPath	= link;
	strt.strTarget	= path;
	strt.strArgs	= _T("");
	strt.strDescription	 = _T("");
	strt.strIconLocation = _T("");

	shortcut.CreateEx(&strt);
}

void CShutDownDlg::OnMenuOut() 
{
	if(mciSendString("set cdaudio door open",NULL,0,NULL)!=0)
		MessageBox("open error!");
}

void CShutDownDlg::OnMenuClose() 
{
	if(mciSendString("set cdaudio door closed",NULL,0,NULL)!=0)
		MessageBox("close error!");
}

BOOL CShutDownDlg::GetCdrom()
{
BOOL cdrom=FALSE;

	DWORD dwDrives = GetLogicalDrives();
	UINT uType;
	char szDrive[20]; 

	szDrive[1] = ':';
	szDrive[2] = '\0';
	// do all 32 just for kicks
	for( int i = 0; i < 32; i++ )
	{
		szDrive[0] = 'A' + (char)i;
		DWORD dwTemp = dwDrives;
		if( dwTemp & 1 )
		{
			ASSERT(strlen(szDrive)== 2);
			char szTemp[5];
			strcpy(szTemp, szDrive);
			strcat(szTemp, "\\.");
			uType = GetDriveType( (LPCTSTR)szTemp );

			if(uType == DRIVE_CDROM)
				cdrom = TRUE;
		}
	}

	return cdrom;
}

void CShutDownDlg::OnMenuSystem() 
{
CPwdDlg dlg;

	dlg.DoModal();
}

void CShutDownDlg::OnMenuPassword() 
{
CKeyDlg	dlg;

	dlg.DoModal();
}

void CShutDownDlg::OnMenuIdlemin() 
{
CInput dlg;
CString ss;

	dlg.SetCaption(_T("请输入时间(分钟)"));
	dlg.SetTitle(_T("鼠标键盘停止活动多少分钟后,锁定控制台:"));
	dlg.SetTextSelect(TRUE);
	
	ss.Format("%d",m_IdleMin);
	dlg.SetEditText(ss);
	if(dlg.DoModal() == IDOK)
	{
		ss = dlg.GetEditString();
		AfxGetApp()->WriteProfileInt("ShutDown","idlemin",atoi(ss));
		m_IdleMin = atoi(ss);
	}
}

void CShutDownDlg::LockWindow()
{
	ShowWindow(SW_SHOWNORMAL);
	BringWindowToTop();
	CenterWindow();
	m_IsShow = TRUE;
	SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | WS_EX_TOPMOST);
}

⌨️ 快捷键说明

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