长时间使用电脑,导致眼睛胀痛,去医院检查,眼压升高,严重可能导致青光眼,进而导致失明。
所以准备开发一个程序来提醒自己保护眼睛。
程序在后台运行,所以准备开发为服务,开机自启动。
我对C++更熟,对C#不熟,所以准备使用C++。
服务检测开机与解锁,检测到之后开始计时,比如40分钟,这个可以自己定,之后提示已用时40分钟,需要休息眼睛。
windows服务开发文档
Services (Services) - Win32 apps | Microsoft Learn
使用chat3.5翻译的
一个服务应用程序符合服务控制管理器(SCM)的接口规则。它可以在系统启动时自动启动,通过服务控制面板小程序由用户启动,或者由使用服务函数的应用程序启动。即使没有用户登录到系统,服务也可以执行。
驱动程序服务符合设备驱动程序协议。它类似于服务应用程序,但不与SCM交互。为简单起见,在这个概述中,术语"服务"指的是服务应用程序。
触发器现在可以用来控制服务启动。有关更多信息,请参阅服务配置。
服务控制管理器(SCM)维护一个安装的服务和驱动程序服务的数据库,并提供了一种统一且安全的方法来控制它们。数据库包含每个服务或驱动程序服务应如何启动的信息。它还使系统管理员能够自定义每个服务的安全要求,从而控制对该服务的访问。
下面是使用SCM提供的功能的程序类型:
类型? ? ? ? ? ? 描述
服务程序:提供一个或多个服务所需的可执行代码的程序。服务程序使用与SCM连接并向SCM发送状态信息的函数。
服务配置程序:查询或修改服务数据库的程序。服务配置程序使用打开数据库的函数,在数据库中安装或删除服务,并查询或修改已安装服务的配置和安全参数。服务配置程序管理服务和驱动程序服务。
服务控制程序:启动和控制服务和驱动程序服务的程序。服务控制程序使用向SCM发送请求的函数,而SCM执行这些请求。
服务控制管理器(SCM)在系统启动时启动。它是一个远程过程调用(RPC)服务器,因此服务配置和服务控制程序可以操作远程机器上的服务。
服务函数提供了SCM执行以下任务的接口:
维护安装的服务数据库。 在系统启动或需求时启动服务和驱动程序服务。 枚举安装的服务和驱动程序服务。 维护正在运行的服务和驱动程序服务的状态信息。 向正在运行的服务发送控制请求。 锁定和解锁服务数据库。
SCM在注册表中维护着一个已安装服务的数据库。该数据库由SCM和添加、修改或配置服务的程序使用。以下是该数据库的注册表键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services。
该键包含每个已安装服务和驱动程序服务的子键。子键的名称是服务的名称,由服务配置程序在安装服务时通过CreateService函数指定。
在系统安装时创建了数据库的初始副本。数据库包含系统启动期间所需的设备驱动程序的条目。数据库包括每个已安装服务和驱动程序服务的以下信息:
服务类型。这指示服务是在自己的进程中执行还是与其他服务共享进程。对于驱动程序服务,这指示服务是内核驱动程序还是文件系统驱动程序。 启动类型。这指示服务或驱动程序服务是否在系统启动时自动启动(自动启动服务),或者在服务控制程序请求时由SCM启动它(按需启动服务)。启动类型还可以指示服务或驱动程序服务被禁用,此时无法启动它。 错误控制级别。如果服务或驱动程序服务在系统启动期间无法启动,这指定错误的严重性,并确定启动程序将采取的操作。 可执行文件的完整路径。服务的文件扩展名为.EXE,驱动程序服务的文件扩展名为.SYS。 用于确定启动服务或驱动程序服务的正确顺序的可选依赖信息。对于服务,此信息可以包括SCM必须在启动指定服务之前启动的服务列表、服务所属的加载顺序组的名称,以及指示服务在其加载顺序组中的启动顺序的标识符。对于驱动程序服务,此信息包括必须在指定驱动程序之前启动的驱动程序的列表。 对于服务,还有一个可选的账户名和密码。服务程序在该账户的上下文中运行。如果未指定账户,则服务在LocalSystem账户的上下文中执行。 对于驱动程序服务,还有一个可选的驱动程序对象名称(例如,\FileSystem\Rdr或\Driver\Xns),由I/O系统用于加载设备驱动程序。如果未指定名称,则I/O系统将根据驱动程序服务名称创建一个默认名称。