首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows UPS (不间断电源)服务-关闭UPS?

Windows UPS (不间断电源)服务-关闭UPS?
EN

Stack Overflow用户
提问于 2008-12-23 00:10:35
回答 3查看 11.3K关注 0票数 0

我正在使用UPS服务从应用程序监视我的UPS的状态- HKLM\SYSTEM\CCS\Services\UPS\Status中的键包含您可以从电源控制面板获得的所有信息。但是--我希望能够从我的应用程序中告诉UPS关闭。我知道该服务可以告诉UPS关闭--例如,在使用电池运行了一段时间后--我想知道是否可以向该服务发送某种命令,以手动启动关闭。

我在搜索这些信息时遇到了麻烦--人们往往会拼写错误的"Uninterruptible“(hrm,Firefox红线,但没有其他选择),而"UPS”只是在送货服务中获得了匹配。也许我可以通过System.ServiceController或WMI做点什么?

澄清:是的,我说的是关闭物理UPS设备的电源。我知道怎么停止服务。我认为这将是一个常见的问题--我希望我的UPS与PC一起关闭。我有一个想法,我打算尝试一下,基于this page。你看,APC (和其他所有人)必须提供一个DLL供UPS服务调用,而且由于函数调用有很好的文档记录,所以我没有理由不能P/调用它们。一旦我知道它是否有效,我会重新编辑它。

更新:我尝试调用UPSInit,然后调用UPSTurnOff,但什么也没有发生。我将对它进行更多的修改,但是直接调用apcups.dll可能是个死胡同。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-01-22 15:08:30

好吧,我有答案(测试!),但它并不美观。我的APC使用APC "Smart" protocol (more here)进行通信。在我的例子中,你需要的是一个“软关机”,"S“命令。但首先你需要确保它处于“智能”模式("Y")。现在,如果您想让Windows UPS服务监视状态,该服务将拥有对COM端口的铁腕控制。因此,您可以a)让Windows服务关闭UPS,或者b)关闭该服务并自行关闭UPS。

UPS本身在收到"S“命令后有一个”宽限期“,让您有时间关闭您的操作系统。这意味着要执行上述(a)项,您必须:

  • 杀死实用程序(电源)电源
  • 等待Windows服务超时(默认且最少2分钟)
  • 等待Windows关闭--在接近尾声时,它将发送"S“命令
  • 等待UPS宽限期,在此之后它将实际关闭

我认为我们会选择(a),只是因为(b)涉及到额外的工作来终止服务和实现串行通信。

票数 1
EN

Stack Overflow用户

发布于 2008-12-23 00:49:37

查看我对Herman的评论,你想关闭UPS,而不是UPS服务,对吗?我是说,你想让那玩意儿关掉,切断电源,等等,对吧?

如果是这样,您将在UPS by UPS型号上查找它。我怀疑它们中的两个会有相同的效果。

在你的搜索中,不要使用UPS,而是尝试"APC“或”电池“。我认为很多代码都是在笔记本电脑上运行的,用于处理电池耗电等问题。

有些地方隐藏在一些尘土飞扬的旧文件中,我有APC UPS的协议信息,以及它们响应的命令,以及它们发送到PC的内容等。但这是很久以前我们用串行电缆将UPS连接到计算机的时候了……你可以用Qmodem或Hyperterm与UPS通话...

从和APC的人交谈中学到的。他们非常友好,而且很有帮助。现在,我想你只需要从你的Powerchute软件中发布一个URL,它就会直接与UPS对话,并执行你的命令。

票数 2
EN

Stack Overflow用户

发布于 2008-12-23 00:33:06

请告诉我你想用什么语言来做这个。如果你使用的是.NET,你可以用ServiceController类来实现(请阅读文档)。

用于使用C/C++、Service Functions (Windows)控制Win32应用程序接口中的服务。

例如,要停止服务,您可以使用ControlService函数,如下所示(这是一个快速而粗糙的示例):

代码语言:javascript
复制
OpenService (hServMgr, TEXT("\\UPS_SERVICE_0"), SC_MANAGER_ALL_ACCESS);

SERVICE_STATUS stat;
ControlService (hUpsService, SERVICE_CONTROL_STOP, &stat)

请注意,您需要在hServMgr中提供服务管理器句柄,并且\UPS_SERVICE_0名称必须与所需的UPS服务(内置或其他)匹配。

请记住,要停止服务,您需要适当的安全权限。这不是管理员帐户的问题,但请记住,使用非管理员帐户登录时会发生什么情况。

希望这能有所帮助。

关于关闭物理UPS设备,我记得在WIn98的日子里,我能够关闭设备的电源,通过COM端口与UPS交谈,尽管我不记得是什么品牌或如何编程接口。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/387830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档