C# 企业微信机器人推送消息 windows服务应用程序的使用

@C# 企业微信机器人推送消息
先添加一个机器人!
在这里插入图片描述

然后查看机器人就可以得到一个 webhook
特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏!

然后开始写代码 ,只需要httpPost 调用一下这个地址就可以发送消息了。
首先我们创建服务项目,可以更好的定时发送
在这里插入图片描述

设置服务的属性
在这里插入图片描述
在这里插入图片描述
服务添加完成后可以写一个批处理文件去安装服务 使用微软的installutil 去安装服务
在程序debug目录 创建一个文本文件 扩展名改为bat就可以,然后把下面内容复制进去。最后以管理员方式运行
%~dp0 获取当前目录
WindowsService1.exe 项目的名称 根据实际情况定
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0WindowsService1.exe pause
运行成功后可以看到有我们刚刚创建好的服务
在这里插入图片描述

以上是windows服务程序的安装。 接下来我们写推送消息的实现

先写一个post请求的方法

   private static string HttpPost(string url, string body)
        {
            try
            {
                Encoding encoding = Encoding.UTF8;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.Accept = "text/html, application/xhtml+xml, */*";
                request.ContentType = "application/json";

                byte[] buffer = encoding.GetBytes(body);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    return reader.ReadToEnd();
                }
            }
            catch (Exception)
            {
            }
            return "";
        }

然后是我们请求的内容 ,使用json格式更方便 于是我创建了一个请求的类 最后转换成json就可以

    class RequestModel
    {
        public string msgtype { get; set; } = "text";
        public text text { get; set; } = new text();
    }

    class text
    {
        /// <summary>
        /// 发松的内容
        /// </summary>
        public string content { get; set; } = "广州今日天气:29度,大部分多云,降雨概率:60%";
        public string mentioned_list { get; set; } = "@all";
    }

最后我们写一个方法去调用,使用 JsonConvert可以把实体类转换成Json格式
需要下载Newtonsoft.Json.dll 可以鼠标右键在nuget管理包中搜索下载

        /// <summary>
        /// 机器人发送消息
        /// </summary>
        /// <param name="message"></param>
        public static void WeChatRobot(string message)
        {
            try
            {
                RequestModel request = new RequestModel();
                request.text.content = message;
                string json = JsonConvert.SerializeObject(request);
                string webhookUrl = "这里填写机器人的webhook 可以在机器人信息那里查看";
                string response = string.Empty;
                while (string.IsNullOrEmpty(response))
                {
                    //3s请求一次 直到请求成功
                    response = HttpPost(webhookUrl, json);
                    Thread.Sleep(3000);
                }
                File.AppendAllText("D:\\Response.txt", response);
            }
            catch (Exception)
            {

                throw;
            }
        }

最后我们在服务启动里面调用这个机器人发送的方法就可以
判断每周五发送消息

 protected override void OnStart(string[] args)
        {
            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    DayOfWeek DayOfWeek = DateTime.Now.DayOfWeek;
                    if (DayOfWeek == DayOfWeek.Friday)
                    {
                        Services.WeChatRobot($"今天是{DayOfWeek}");
                        break;
                    }
                    Thread.Sleep(1000);
                }
            });
        }

        protected override void OnStop()
        {
        }

程序有改动,只需要重新生成程序。 在安装一遍服务就可以。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904652.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow(159->162)--文件上传漏洞

Web159 考点&#xff1a; 前端校验MIME验证黑名单 思路&#xff1a; 上传.user.ini文件&#xff1a; 文件内容auto_prepend_fileshell.png 由于网页存在前端过滤&#xff0c;只允许上传.png文件,所以我们将文件名修改为.user.ini.png上传&#xff0c;然后抓包删除.png后缀名…

《模拟电子技术基础》第六版PDF课后题答案详解

《模拟电子技术基础》第六版是在获首届全国优秀教材建设奖一等奖的第五版的基础上&#xff0c;总结6年来的教学实践经验修订而成的新形态教材。为满足国家人才培养的需求&#xff0c;适应新型教学模式&#xff0c;并考虑到大多数院校逐渐减少课程学时的现状&#xff0c;在不降低…

ComfyUI EcomID: 阿里开源助力定制化个性图像生成,单图生成高相似度图像

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

LabVIEW涡扇发动机加力泵测试

LabVIEW软件开发的涡扇发动机加力泵测试平台采用高度集成的硬件设备&#xff0c;实现了对涡扇发动机加力泵的全面测试和分析&#xff0c;从而确保其性能满足严格的航空标准。 项目背景 涡扇发动机是现代飞机的重要动力来源之一&#xff0c;其加力泵的性能直接影响飞机的整体动…

关于我的数据库——MySQL——第二篇

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09;。 表的操作 创建表…

练习LabVIEW第二十八题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第二十八题&#xff1a; 建立一个VI&#xff0c;模拟滚动—个骰子(骰子取值1~6)&#xff0c;跟踪骰子滚动后的取值出现次数…

xhr的readyState和status

XMLHttpRequest&#xff08;XHR&#xff09;对象中的readyState和status用于监控异步 HTTP 请求的状态。它们分别表示请求的当前阶段和服务器的响应状态。 readyState 用于判断请求所处的阶段&#xff0c;确保数据完全接收。 status 用于判断请求的结果状态&#xff08;如200表…

计算机网络IP地址分类,子网掩码,子网划分复习资料

IP 地址的概念 IP 地址是独立于硬件地址的逻辑地址&#xff0c;它是由软件提供的地址。 IP 地址是网络层地址。 IP 编址方案和分类 IP 地址由 32 位二进制数构成&#xff0c;分为前缀(网络地址)和后缀(主机地址) 同一网段中每台计算机的 IP 地址是唯一的网络地址的分配全球…

【Stable Diffusion】

1、SD 模型 安装完SD软件后&#xff0c;必须搭配基础模型才能使用。 不同的基础模型&#xff0c;其画风和擅长的领域会有侧重。 Checkpoint大模型 大模型是 SD 的核心&#xff0c;用来控制生成图片的整个画面风格走势。 出图前要选择好合适的大模型&#xff0c;比如有些擅长…

WPF+MVVM案例实战(一)- 设备状态LED灯变化实现

文章目录 1、项目创建2、UI界面布局1. MainWindow.xaml2、颜色转换器实现2.MainViewModel.cs 代码实现3、运行效果4.源代码下载1、项目创建 打开 VS2022 ,新建项目 Wpf_Examples,创建各层级文件夹,安装 CommunityToolkit.Mvvm 和 Microsoft.Extensions.DependencyInjectio …

node集成redis (教学)

文章目录 前言一、安装redis二、可视化界面测试连接1.vscode安装插件 三、node代码编写1.先安装两个库&#xff08;redis和ioredis&#xff09;2.测试连接 &#xff08;前提是你的redis服务器要启动起来&#xff09; 总结 前言 在Node.js中集成ioredis是一个常见的做法&#x…

Java MySQL-JDBC编程

文章目录 初始JDBCJDBC的工作原理 初始MavenMaven入门简介修改Maven的配置文件在idea中查看当前的maven使用在当前Maven工程中加载数据库驱动 DriverManager连接方案注册一个驱动创建一个连接获取一个操作SQL的对象创建SQL查询获取结果集遍历结果集输出结果关闭资源以及完整代码…

TCP全连接队列与 tcpdump 抓包

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;计算机网络高效通关之路 欢迎大家点赞收藏评论&#x1f60a; 目录 listen第二个参数详解 全连接队列与半连接队列半开放连接队列&#xff08;SYN队列&#xff09;全连接队列&#xff08;接受队列…

20241030在荣品PRO-RK3566开发板的适配Rockchip原厂的buildroot的时候配置DTS中的电源域

20241030在荣品PRO-RK3566开发板的适配Rockchip原厂的buildroot的时候配置DTS中的电源域 2024/10/30 17:38 请问 RK3566开发板上的 电源配置 和 DTS文件是如何对应的&#xff1f; 底板原理图 PRO-RK3566-B-20210329原理图.pdf vccio4-supply 是1.8V。 对不上呀&#xff1f; Z:…

【Java】数组的定义与使用

数组的定义与使用 1. 数组的基本概念1.1 为什么要使用数组1.2 什么是数组1.3 数组的创建及初始化1.3.1 数组的创建1.3.2 数组的初始化 1.4 数组的使用1.4.1 数组中元素访问1.4.2 遍历数组 2. 数组是引用类型2.1 初始JVM的内存分布2.2 基本类型变量与引用类型变量的区别2.3 再谈…

活动回顾丨艾体宝《开源软件供应链安全的最佳实践》线下研讨会圆满落幕!

10月&#xff0c;艾体宝联合Mend成功举办了一场主题为“开源软件供应链安全最佳实践”的研讨会。此次活动吸引了众多业内专家、技术领袖和企业代表参与&#xff0c;共同探讨在当今数字化转型浪潮中&#xff0c;企业如何应对开源软件供应链安全的挑战。会议围绕三大核心议题展开…

复现第一周24

1.[SWPUCTF 2021 新生赛]gift_F12 1&#xff09;打开题目 2&#xff09;看源码 3&#xff09;直接ctrl&#xff0b;f搜索flag 2.[SWPUCTF 2021 新生赛]nc签到 1&#xff09;开题 2&#xff09;下载附件用记事本打开 3&#xff09;打开kali使用nc连接代码 输入l\s命令绕过黑名…

如何写出爆款脚本,很多人都忽略了这一项——口语化

不是每次写的视频脚本都绞尽脑汁吗&#xff1f; 你让观众觉得在和你‘聊天’&#xff0c;可一开写就生长硬、平淡、没有吸引力&#xff1f; 其实&#xff0c;只要掌握一些口语化的写作技巧&#xff0c;剧本也能写得像聊天一样轻松自然&#xff0c;让观众从头尾看到&#xff0…

ubuntu 22.04网线连接无ip、网络设置无有线网界面(netplan修复)

目前遇到过树莓派和其他设备安装 ubuntu22.04&#xff0c; 使用有线网络一段时间&#xff08;可能有其他软件安装导致&#xff09;造成有线网络未启动无ip分配的问题。 1、动态分配 通过命令行启动dhcpclient实现 网络eth0存在异常&#xff0c;网口灯电源和信号灯均点亮&am…

Machine Learning on the Edge

安装 python3 网址&#xff1a;https://www.python.org/downloads/release/python-3120/ 打开命令行安装esptool包&#xff0c;pip install esptool 下载Node.js 网址&#xff1a;https://nodejs.org/en/download/prebuilt-installer