首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >输出windows服务已完成的警告消息

输出windows服务已完成的警告消息
EN

Stack Overflow用户
提问于 2018-10-12 01:43:37
回答 1查看 190关注 0票数 0

我已经开发了一个windows服务,用的是Topshelf和c#。它对数据库进行一些查询,并写入一个日志文件。它运行良好。然而,我想知道什么时候服务已经完成了日志文件的写入,并且还没有找到一个好的方法来完成。

是否可以显示控制台消息或DOS命令行消息来警告或通知我服务已结束?

我试图在服务结束时给我发送一封Outlook电子邮件,但由于公司的限制,我无法从Windows程序或使用Gmail API发送Outlook电子邮件。

EN

回答 1

Stack Overflow用户

发布于 2018-10-12 03:51:29

找到答案搜索函数:WTSSendMessage

感谢:.NET Windows Services (WTSSendMessage) : Displays message on XP but not Windows 7

代码语言:javascript
复制
       static extern bool WTSSendMessage(
              IntPtr hServer,
              [MarshalAs(UnmanagedType.I4)] int SessionId,
              String pTitle,
              [MarshalAs(UnmanagedType.U4)] int TitleLength,
              String pMessage,
              [MarshalAs(UnmanagedType.U4)] int MessageLength,
              [MarshalAs(UnmanagedType.U4)] int Style,
              [MarshalAs(UnmanagedType.U4)] int Timeout,
              [MarshalAs(UnmanagedType.U4)] out int pResponse,
              bool bWait);

    [DllImport("Kernel32.dll", SetLastError = true)]
    static extern int WTSGetActiveConsoleSessionID();

    public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
    public static int WTS_CURRENT_SESSION = 1;

        public static void Show_Message()
        {
            bool result = false;
            string title = "Aviso";
            int tlen = title.Length;
            string msg = "Service ended !";
            int mlen = msg.Length;
            int resp = 0;

            result = WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, title, tlen, msg, mlen, 0, 0, out resp, true);
            //int err = Marshal.GetLastWin32Error();
            //System.Console.WriteLine("result:{0}, errorCode:{1}, response:{2}", result, err, resp);


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

https://stackoverflow.com/questions/52766079

复制
相关文章

相似问题

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