clockdlg.cpp

来自「个人计算机定时自动执行软件,是 一个值得看看的程序。」· C++ 代码 · 共 2,235 行 · 第 1/5 页

CPP
2,235
字号
						{
							_beginthread(beginThreadFunc,0,NULL);
						}
						switch(((MISSION*)m_MissionArray[i])->choice_actionmode)//执行任务
						{
						case 0://执行文件
							_beginthread(begindofileThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_actionpath));
							break;
						case 1://关闭计算机
							_beginthread(beginshutdownThread,0,NULL);
							break;
						case 2://待机
							_beginthread(beginpoweroffThread,0,NULL);
							break;
						case 3://重启
							_beginthread(beginrebootThread,0,NULL);
							break;
						case 4://注销
							_beginthread(beginlogoffThread,0,NULL);
							break;
						}

						CAwakeDlg* pDialog= new CAwakeDlg();//创建一个CAwakeDlg对话框
						if(pDialog != NULL)
						{
							//将数据传递给对话框。
							memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
							
							
							pDialog->number=i;//将第几项数据传给对话框,
							pDialog->pclockdlg=this;

							//创建对话框
							BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
							//显示对话框
							pDialog->ShowWindow(SW_SHOW);
							//把窗口句柄赋给hWin,
							((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
						}
						m_cyclecount=0;//因为循环提醒,每次提醒后,必须赋0,否则下次提醒就出错。
					}
				}//end 启用闹铃任务 if


				else//如果没有启用任务,
				{
					if(m_cyclecount==cycle)//如果分=当前分
					{
					
						//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
						if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
						{
							_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));
						
						}
						else//否则启用默认标准铃声线程
						{
							_beginthread(beginThreadFunc,0,NULL);
						}

						CAwakeDlg* pDialog= new CAwakeDlg();//创建一个CAwakeDlg对话框
						if(pDialog != NULL)
						{
							//将数据传递给对话框。
							memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
							
							
							pDialog->number=i;//将第几项数据传给对话框,
							pDialog->pclockdlg=this;

							//创建对话框
							BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
							//显示对话框
							pDialog->ShowWindow(SW_SHOW);
							//把窗口句柄赋给hWin,
							((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
						}
						m_cyclecount=0;//因为循环提醒,每次提醒后,必须赋0,否则下次提醒就出错。
					}
				}

				break;	
			}

//case1///////////////////////////////////////////
			case 2://每天同一时间
			{				
				//不判断年月日
				if(hour==curtime.wHour)//如果小时=当前小时,继续判断分
				{
					//如果有启用闹铃任务,执行前有提示,则执行提示信息线程
					if(((MISSION*)m_MissionArray[i])->choice_usingaction==1 ) 
					{
						if(((MISSION*)m_MissionArray[i])->choice_actionhint==1)//执行前有提示
						{
							int actiontime=((MISSION*)m_MissionArray[i])->choice_actiontime;
							int min_minute;
							min_minute=minute;
							min_minute=min_minute-1;//有提示,则分钟减1
							int second=60-actiontime;
							if(curtime.wMinute==min_minute && curtime.wSecond==second)//当时间与秒到时后,运行提示线程
							{							
								int actionmode=((MISSION*)m_MissionArray[i])->choice_actionmode;
								_beginthread(beginactionThread,0,(void*)actionmode);
							
							}
						}

						else
						{
						}
							
						
						if(minute==curtime.wMinute)//如果分=当前分
						{
							//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
							if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
							{
								_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));
							
							}
							else//否则启用默认标准铃声线程
							{
								_beginthread(beginThreadFunc,0,NULL);
							}

							switch(((MISSION*)m_MissionArray[i])->choice_actionmode)//执行任务
							{
							case 0://执行文件
								_beginthread(begindofileThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_actionpath));
								break;
							case 1://关闭计算机
								_beginthread(beginshutdownThread,0,NULL);
								break;
							case 2://待机
								_beginthread(beginpoweroffThread,0,NULL);
								break;
							case 3://重启
								_beginthread(beginrebootThread,0,NULL);
								break;
							case 4://注销
								_beginthread(beginlogoffThread,0,NULL);
								break;
							}

							CAwakeDlg* pDialog= new CAwakeDlg();
							if(pDialog != NULL)
							{
								memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
								pDialog->number=i;//将第几项数据传给对话框,
								pDialog->pclockdlg=this;
								BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
								pDialog->ShowWindow(SW_SHOW);
								((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
								KillTimer(nIDEvent);
							}
						
						}//end minute if
						
					
					}//end 启用闹铃任务 if					
					
					else//不启用任务
					{
						if(minute==curtime.wMinute)//如果分=当前分,
						{
							//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
							if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
							{
								_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));
							
							}
							else//否则启用默认标准铃声线程
							{
								_beginthread(beginThreadFunc,0,NULL);
							}

							CAwakeDlg* pDialog= new CAwakeDlg();
							if(pDialog != NULL)
							{
								memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
								pDialog->number=i;//将第几项数据传给对话框,
								pDialog->pclockdlg=this;
								BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
								pDialog->ShowWindow(SW_SHOW);
								((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
								KillTimer(nIDEvent);
							}
						}//end minute
					}//end else
				}//end hour if
				
				break;
			}
//case2///////////////////////////////////////////
			case 3://每周同一时间
			{				
				if(week==curtime.wDayOfWeek && hour==curtime.wHour)//设置的日期所得到星期=当前星期时,
				{
					//如果有启用闹铃任务,执行前有提示,则执行提示信息线程
					if(((MISSION*)m_MissionArray[i])->choice_usingaction==1 ) 
					{
						if(((MISSION*)m_MissionArray[i])->choice_actionhint==1)//执行前有提示
						{
							int actiontime=((MISSION*)m_MissionArray[i])->choice_actiontime;
							int min_minute;
							min_minute=minute;
							min_minute=min_minute-1;//有提示,则分钟减1
							int second=60-actiontime;
							if(curtime.wMinute==min_minute && curtime.wSecond==second)//当时间与秒到时后,运行提示线程
							{							
								int actionmode=((MISSION*)m_MissionArray[i])->choice_actionmode;
								_beginthread(beginactionThread,0,(void*)actionmode);
							
							}
						}

						else
						{
						}
							
						
						if(minute==curtime.wMinute)//如果分=当前分
						{
							//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
							if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
							{
								_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));
							
							}
							else//否则启用默认标准铃声线程
							{
								_beginthread(beginThreadFunc,0,NULL);
							}

							switch(((MISSION*)m_MissionArray[i])->choice_actionmode)//执行任务
							{
							case 0://执行文件
								_beginthread(begindofileThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_actionpath));
								break;
							case 1://关闭计算机
								_beginthread(beginshutdownThread,0,NULL);
								break;
							case 2://待机
								_beginthread(beginpoweroffThread,0,NULL);
								break;
							case 3://重启
								_beginthread(beginrebootThread,0,NULL);
								break;
							case 4://注销
								_beginthread(beginlogoffThread,0,NULL);
								break;
							}

							CAwakeDlg* pDialog= new CAwakeDlg();
							if(pDialog != NULL)
							{
								memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
								pDialog->number=i;//将第几项数据传给对话框,
								pDialog->pclockdlg=this;
								BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
								pDialog->ShowWindow(SW_SHOW);
								((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
								KillTimer(nIDEvent);
							}
						
						}//end minute if
						
					
					}//end 启用闹铃任务 if
					else
					{
						if(minute==curtime.wMinute)//如果分=当前分,
						{
							//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
							if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
							{
								_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));
							
							}
							else//否则启用默认标准铃声线程
							{
								_beginthread(beginThreadFunc,0,NULL);
							}

							CAwakeDlg* pDialog= new CAwakeDlg();
							if(pDialog != NULL)
							{
								memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
								pDialog->number=i;//将第几项数据传给对话框,
								pDialog->pclockdlg=this;
								BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
								pDialog->ShowWindow(SW_SHOW);
								((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
								KillTimer(nIDEvent);
							}
						}
					}
				}
				
				
				break;
			}
//case3///////////////////////////////////////////
			case 4://每月同一时间
			{				
				//判断设置的年日是否与当前的年日相等,如果相等,继续判断小时是否过时,
				if(year>=curtime.wYear && day==curtime.wDay &&hour==curtime.wHour)
				{
					//如果有启用闹铃任务,执行前有提示,则执行提示信息线程
					if(((MISSION*)m_MissionArray[i])->choice_usingaction==1 ) 
					{
						if(((MISSION*)m_MissionArray[i])->choice_actionhint==1)//执行前有提示
						{
							int actiontime=((MISSION*)m_MissionArray[i])->choice_actiontime;
							int min_minute;
							min_minute=minute;
							min_minute=min_minute-1;//有提示,则分钟减1
							int second=60-actiontime;
							if(curtime.wMinute==min_minute && curtime.wSecond==second)//当时间与秒到时后,运行提示线程
							{							
								int actionmode=((MISSION*)m_MissionArray[i])->choice_actionmode;
								_beginthread(beginactionThread,0,(void*)actionmode);
							
							}
						}

						else
						{
						}
							
						
						if(minute==curtime.wMinute)//如果分=当前分
						{
							//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
							if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
							{
								_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));
							
							}
							else//否则启用默认标准铃声线程
							{
								_beginthread(beginThreadFunc,0,NULL);
							}

							switch(((MISSION*)m_MissionArray[i])->choice_actionmode)//执行任务
							{
							case 0://执行文件
								_beginthread(begindofileThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_actionpath));
								break;
							case 1://关闭计算机
								_beginthread(beginshutdownThread,0,NULL);
								break;
							case 2://待机
								_beginthread(beginpoweroffThread,0,NULL);
								break;
							case 3://重启
								_beginthread(beginrebootThread,0,NULL);
								break;
							case 4://注销
								_beginthread(beginlogoffThread,0,NULL);
								break;
							}

							CAwakeDlg* pDialog= new CAwakeDlg();
							if(pDialog != NULL)
							{
								memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
								pDialog->number=i;//将第几项数据传给对话框,
								pDialog->pclockdlg=this;
								BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
								pDialog->ShowWindow(SW_SHOW);
								((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
								KillTimer(nIDEvent);
							}
						
						}//end minute if
					}//end 启用闹铃任务 if	
					else
					{
						if(minute==curtime.wMinute)//如果分=当前分
						{
							//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
							if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
							{
								_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));
							
							}
							else//否则启用默认标准铃声线程
							{
								_beginthread(beginThreadFunc,0,NULL);
							}
								CAwakeDlg* pDialog= new CAwakeDlg();
							if(pDialog != NULL)
							{
								//将数据拷贝给对话框。
								memcpy((void*)&(pDialog->m_mission),(void*)((MISSION*)m_MissionArray[i]),sizeof(MISSION));
								pDialog->number=i;//将第几项数据传给对话框,
								pDialog->pclockdlg=this;
								//创建对话框
								BOOL ret = pDialog->Create(IDD_AWAKE_DIALOG,this);
								//显示对话框
								pDialog->ShowWindow(SW_SHOW);
								//把窗口句柄赋给hWin,
								((MISSION*)m_MissionArray[i])->hWin= (long)pDialog;
								KillTimer(nIDEvent);
							}
						}
					}
				}
				break;
			}
//case4///////////////////////////////////////////
			case 5://每年同一时间
			{				
				//判断设置的月日是否与当前的月日相等(设置年>=当前年),如果相等,继续判断小时是否过时,
				if(year>=curtime.wYear && month==curtime.wMonth && day==curtime.wDay &&hour==curtime.wHour)
				{
					//如果有启用闹铃任务,执行前有提示,则执行提示信息线程
					if(((MISSION*)m_MissionArray[i])->choice_usingaction==1 ) 
					{
						if(((MISSION*)m_MissionArray[i])->choice_actionhint==1)//执行前有提示
						{
							int actiontime=((MISSION*)m_MissionArray[i])->choice_actiontime;
							int min_minute;
							min_minute=minute;
							min_minute=min_minute-1;//有提示,则分钟减1
							int second=60-actiontime;
							if(curtime.wMinute==min_minute && curtime.wSecond==second)//当时间与秒到时后,运行提示线程
							{							
								int actionmode=((MISSION*)m_MissionArray[i])->choice_actionmode;
								_beginthread(beginactionThread,0,(void*)actionmode);
							
							}
						}

						else
						{
						}
							
						
						if(minute==curtime.wMinute)//如果分=当前分
						{
							//如果设置有启用媒体音乐,则启用播放wav文件音乐线程
							if(((MISSION*)m_MissionArray[i])->choice_usingsound==1)
							{
								_beginthread(beginwavThread,0,(void*)(((MISSION*)m_MissionArray[i])->choice_wavpath));

⌨️ 快捷键说明

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