定时提醒和关机程序主要代码(C#.NET)

该安装程序是基于C#.NET开发的,所以使用者需安装DotNet 4.0。 程序说明: 1、定时设置。 适合工作一段时间后的休息提醒或锁定计算机。 2、定时关机提醒。 可选择半小时后关机、1小时后关机、自定义时间后关机、设定某一时间点关机。 界面设置可看附件图片1.gif、2.gif。 对应的安装使用包可在“http://download.csdn.net/detail/qwarty/3663377”下载。 ### 定时提醒和关机程序(C#.NET) #### 一、程序概述 本文将对一个基于C#.NET开发的定时提醒与关机程序进行详细介绍。该程序旨在帮助用户在长时间工作之后进行适当的休息提醒或者自动执行关机操作。程序支持的功能包括定时设置、定时关机提醒以及自定义时间点的关机选项。为了更好地理解和应用这些功能,我们将深入探讨其技术实现细节,尤其是关键代码片段的解释。 #### 二、关键技术点解析 ##### 1. **定时设置** 该功能主要用于设置提醒时间,以便用户在长时间工作后得到休息提示或者锁定计算机。这一部分主要涉及到时间和日期的处理,通过对比当前时间和预设时间来触发相应的事件。 ##### 2. **定时关机提醒** 这部分功能允许用户选择不同的关机模式:半小时后关机、一小时后关机、自定义时间后关机以及设定某一具体时间点关机。为了实现这些功能,程序需要能够准确地控制时间并根据用户的设置执行相应的命令。 #### 三、关键技术实现 下面将详细介绍用于实现定时提醒和关机功能的关键代码片段。 ##### 1. **系统调用与权限管理** 为了确保程序可以执行如锁定工作站或关闭系统的高级操作,需要使用到.NET Framework中的P/Invoke特性来调用Windows API。以下是一些关键的API调用示例: ```csharp [DllImport("kernel32.dll", ExactSpelling = true)] internal static extern IntPtr GetCurrentProcess(); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32.dll", SetLastError = true)] internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen); [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool ExitWindowsEx(int DoFlag, int rea); ``` 这些函数分别用于获取当前进程句柄、打开进程令牌、查找特权值、调整令牌权限以及执行退出Windows的操作。通过这些API,程序能够获得必要的权限来执行如关机等高级操作。 ##### 2. **定时器与时间处理** 程序还需要具备准确的时间处理能力,以确保能够在正确的时间点触发特定的事件。这通常涉及到了解和使用.NET中的`DateTime`类。 ```csharp // 提醒或锁定定时器触发代码 if (DateTime.Now == Tempdt || DateTime.Now.CompareTo(Tempdt) >= 0) { // 执行提醒或锁定操作 } ``` 这里,`Tempdt`表示预设的时间点。通过比较当前时间和预设时间,可以判断是否到达了应执行操作的时间点。 ##### 3. **关机功能实现** 关机功能的核心在于调用`ExitWindowsEx`函数,并传入适当的参数来控制关机行为。例如: ```csharp /// <summary> /// 关机 /// </summary> public static bool PowerOff() { return DoExitWin(EWX_FORCE | EWX_POWEROFF); } ``` `DoExitWin`方法内部实现了获取进程权限、调整权限以获得关机权限的过程,并最终调用`ExitWindowsEx`来执行关机操作。 #### 四、总结 本文介绍了如何利用C#.NET开发一个具有定时提醒和关机功能的程序。通过分析关键代码片段,我们了解到程序是如何通过调用Windows API来实现对系统高级操作的支持,同时掌握了一些基本的时间处理技巧。这些技术和方法对于开发类似的应用程序都非常有用。













using System.Runtime.InteropServices;
namespace Timing_Shutdown
{
public partial class frmLoad : Form
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct TokPriv1Luid
{
public int Count;
public long Luid;
public int Attr;
}
[DllImport("kernel32.dll", ExactSpelling = true)]
internal static extern IntPtr GetCurrentProcess();
[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
[DllImport("advapi32.dll", SetLastError = true)]
internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool ExitWindowsEx(int DoFlag, int rea);


- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 简析项目管理协会标准体系样本.doc
- 数据库原理填空题(有答案).doc
- 关于网络游戏对大学生的影响.pptx
- 工程建设项目管理复习题.doc
- 物联网大数据室内空气质量监控解决方案.ppt
- 专题讲座资料(2021-2022年)单片机控制的频率计毕业设计论文.doc
- 算法初步单元测试1.doc
- 计算机信息管理专业顶岗实习手册.doc
- 2022年浙江省第八届大学生财会信息化竞赛.doc
- 南方电网配电网自动化系统验收管理标准.doc
- 网络营销实用培训教材.pptx
- 计算机二级msoffice复习笔记(整理).pdf
- 土木工程知识点-跨海大桥的信息化建设思路.doc
- 架河站综合自动化系统技术规范书.doc
- 卷烟营销网络业务规范.ppt
- 医学生理学教学内容信息化的实践.ppt



- 1
- 2
前往页