紧急呼救,如何在Windows关机过程中关闭我自己写的Windows服务

grf9527 2015-03-17 09:31:16
问题如下:
我做了一个windows服务。该服务通过服务管理界面可以实现启动和关闭,而且可以正常的开机自启动。

问题来了,由于我的服务是与其他的计算机有配合过程。必须在正常关机时通知其他计算机。

思路有两个
1截获Windows关机的消息做处理。
2通过做一些动作,让windows关机时关闭我的服务。


我应该怎么做?
...全文
570 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
染指一梦 2017-07-20
  • 打赏
  • 举报
回复
楼主此问题如何解决的
赵4老师 2015-07-31
  • 打赏
  • 举报
回复
引用 14 楼 grf9527 的回复:
[quote=引用 13 楼 zhao4zhong1 的回复:] 不要企图优雅的结束(因为这是不可能办到的) 而要在烂的不能再烂的摊子上也能重整河山! http://bbs.csdn.net/topics/390787357
引用 13 楼 zhao4zhong1 的回复:
不要企图优雅的结束(因为这是不可能办到的) 而要在烂的不能再烂的摊子上也能重整河山! http://bbs.csdn.net/topics/390787357
你的脸看上去老实忠厚啊。[/quote] 潜台词难道是“实际上……嘿嘿,你懂得。”
grf9527 2015-07-30
  • 打赏
  • 举报
回复
引用 13 楼 zhao4zhong1 的回复:
不要企图优雅的结束(因为这是不可能办到的) 而要在烂的不能再烂的摊子上也能重整河山! http://bbs.csdn.net/topics/390787357
引用 13 楼 zhao4zhong1 的回复:
不要企图优雅的结束(因为这是不可能办到的) 而要在烂的不能再烂的摊子上也能重整河山! http://bbs.csdn.net/topics/390787357
你的脸看上去老实忠厚啊。
赵4老师 2015-06-29
  • 打赏
  • 举报
回复
不要企图优雅的结束(因为这是不可能办到的) 而要在烂的不能再烂的摊子上也能重整河山! http://bbs.csdn.net/topics/390787357
CenDor 2015-06-25
  • 打赏
  • 举报
回复
我问一下 ,你这个问题解决没有啊,我现在要搞一个类似的功能,如果你解决了,还麻烦告诉我以下,多谢!!!
疯狂-的-蜗牛 2015-03-17
  • 打赏
  • 举报
回复
MSDN说的很详细了:https://msdn.microsoft.com/zh-cn/library/windows/apps/aa376881.aspx 关键语句: Service applications receive shutdown notifications in their handler routines. To register a service control handler, use the RegisterServiceCtrlHandlerEx function. 也就是服务程序需要使用RegisterServiceCtrlHandlerEx这个API注册下你的消息循环,你就会收到这个WM_ENDSESSION消息了。
grf9527 2015-03-17
  • 打赏
  • 举报
回复
引用 7 楼 worldy 的回复:
WM_POWER 的时候不能发?
谢谢,没试过在服务中使用
worldy 2015-03-17
  • 打赏
  • 举报
回复
WM_POWER 的时候不能发?
grf9527 2015-03-17
  • 打赏
  • 举报
回复
引用 5 楼 worldy 的回复:
[quote=引用 4 楼 grf9527 的回复:] [quote=引用 3 楼 worldy 的回复:] lz使用什么机制访问服务器?
就是windows的服务。 我自己的服务就在服务器上。[/quote] 废话,我问的是用什么方式访问服务器,dcom,sock,http,RPC。。。。[/quote]没有什么方式,就是一个管理文件的服务,关闭服务时通过临时tcp给远端一个信号。现在的问题是:正常关机时,没法发出这个信号。
worldy 2015-03-17
  • 打赏
  • 举报
回复
引用 4 楼 grf9527 的回复:
[quote=引用 3 楼 worldy 的回复:] lz使用什么机制访问服务器?
就是windows的服务。 我自己的服务就在服务器上。[/quote] 废话,我问的是用什么方式访问服务器,dcom,sock,http,RPC。。。。
grf9527 2015-03-17
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
lz使用什么机制访问服务器?
就是windows的服务。 我自己的服务就在服务器上。
worldy 2015-03-17
  • 打赏
  • 举报
回复
lz使用什么机制访问服务器?
grf9527 2015-03-17
  • 打赏
  • 举报
回复
引用 1 楼 u011391040 的回复:
LRESULT CMyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
 // TODO: Add your specialized code here and/or call the base class
       if ( message ==  WM_ENDSESSION ) //Windows关机消息
      {
             //相应的处理代码
      }
     return CNewDialog::WindowProc(message, wParam, lParam);
}
谢谢先,我不知道是否在windows服务中也可以这样做。你这个貌似是个Cdialog的函数。
lougd 2015-03-17
  • 打赏
  • 举报
回复
LRESULT CMyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
 // TODO: Add your specialized code here and/or call the base class
       if ( message ==  WM_ENDSESSION ) //Windows关机消息
      {
             //相应的处理代码
      }
     return CNewDialog::WindowProc(message, wParam, lParam);
}
赵4老师 2015-03-17
  • 打赏
  • 举报
回复
grf9527 2015-03-17
  • 打赏
  • 举报
回复
引用 9 楼 mfcing 的回复:
MSDN说的很详细了:https://msdn.microsoft.com/zh-cn/library/windows/apps/aa376881.aspx 关键语句: Service applications receive shutdown notifications in their handler routines. To register a service control handler, use the RegisterServiceCtrlHandlerEx function. 也就是服务程序需要使用RegisterServiceCtrlHandlerEx这个API注册下你的消息循环,你就会收到这个WM_ENDSESSION消息了。
谢谢。

16,372

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧