![]() |
1
2
查看我对赫尔曼的评论,你想关闭UPS,而不是UPS服务,对吗?我是说,你想让那东西关掉,切断电源,等等,对吗? 如果是这样,您将在UPS by UPS型号上查看它。我怀疑他们中的两个也能起到同样的作用。 在搜索中,请尝试“apc”或“battery”,而不是UPS。我认为很多代码是笔记本电脑上运行的,用来处理电池等问题。 有些地方隐藏在一些尘土飞扬的旧文件中,我有APC UPS的协议信息,它们的响应命令,以及它们发送到PC的内容等。但这是我们以前用串行电缆将UPS连接到我们的计算机时的做法…你可以用qmodem或hyperterrm与UPS通话… 从和APC的人交谈中了解到。他们很好,很有帮助。现在,我认为你只是发布了一个来自PowerSlipe软件的URL,它将直接与UPS对话,并执行你的命令。 |
![]() |
2
1
好的,我有答案(测试!)但是不漂亮。我的APC UPS使用 APC "Smart" protocol ( more here )在我的例子中,您需要一个“软关闭”、“S”命令。但首先你需要确保它处于“智能”模式(“Y”)。现在,如果您想让Windows UPS服务监控状态,该服务将在COM端口上有一个铁把手。因此,您可以a)让Windows服务关闭UPS,或者b)自行关闭服务并关闭UPS。 在收到“S”命令后,UPS本身有一个“宽限期”,给您时间关闭操作系统。这意味着要做到上述(a)点,你必须:
我认为我们会选择(a),仅仅是因为(b)需要额外的工作来终止服务和实现串行通信。 |
![]() |
3
-1
拜托,告诉我你想用什么语言…如果您使用的是.NET,那么您可以使用ServiceController类(读取文档)来实现这一点。 用C/C++控制Win32 API中的服务 Service Functions (Windows) . 例如,要停止服务,您可以使用如下ControlService函数(这是一个快速而肮脏的示例):
请注意,您需要在hservmgr中提供一个服务管理器句柄,并且\\ups\u service\u 0 name是必须与所需的UPS服务(Windows内置或其他)匹配的名称。 记住,要停止服务,您需要适当的安全权限。这不是管理帐户的问题,但请记住使用非管理帐户登录时会发生什么。 希望有帮助。 关于关闭物理UPS设备,我记得在Win98年的时候,我通过COM端口关闭了与UPS通话的设备,尽管我不记得品牌或编程接口是如何的。 |