调用大漠插件发送QQ和微信消息
时间:2019-08-21
本文章向大家介绍调用大漠插件发送QQ和微信消息,主要包括调用大漠插件发送QQ和微信消息使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
大漠插件:3.1233
0、注册dm.dll;
1、添加com引用;
2、dmsoft各种调用;
原理:
查找窗口hwnd→窗口激活→添加消息到文本框→回车→窗口取消激活
截图:
代码:
1 class Form1 : Form 2 { 3 public Form1() 4 { 5 var dm = new dmsoft(); 6 Console.WriteLine(Resources.Form1_Form1_, dm.Ver()); 7 8 ClientSize = new Size(600, 400); 9 MaximizeBox = false; 10 FormBorderStyle = FormBorderStyle.FixedSingle; 11 12 var listView1 = new ListView() {Name = "lstView1", Location = new Point(0, 0), Size = new Size(300, this.ClientRectangle.Height), Columns = {"句柄", "标题", "类名"}, BackColor = Color.Cornsilk, FullRowSelect = true, GridLines = true, View = View.Details, CheckBoxes = true, MultiSelect = true,}; 13 var btnReload = new Button() {Name = "btnReload", Text = Resources.Form1_Form1__刷新__R_, Location = new Point(300, 3), AutoSize = true}; 14 var btnSend = new Button() {Name = "btnSend", Text = Resources.Form1_Form1__发送__S_, Location = new Point(400, 3), AutoSize = true}; 15 var txtMessage = new TextBox() {Name = "txtMessage", Text = @"hello world!", Location = new Point(300, 30), Size = new Size(this.Width - 300, ClientRectangle.Height - 30), Multiline = true}; 16 this.Controls.AddRange(new Control[] {listView1, btnReload, btnSend, txtMessage}); 17 this.Text = string.Format(Resources.Form1_Form1__0___1_, this.ProductName, this.ProductVersion); 18 19 btnReload.Click += (sender, args) => 20 { 21 var hwnds = new List<int>(); 22 var classNames = "TXGuiFoundation,ChatWnd".Split(','); 23 foreach (var className in classNames) 24 { 25 var win = dm.EnumWindow(0, "", className, 18); 26 hwnds.AddRange(win.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(x => Convert.ToInt32(x))); 27 } 28 29 listView1.BeginUpdate(); 30 listView1.Items.Clear(); 31 foreach (var hwnd in hwnds) 32 { 33 listView1.Items.Add(hwnd.ToString()).SubItems 34 .AddRange(new string[] {dm.GetWindowTitle(hwnd), dm.GetWindowClass(hwnd)}); 35 } 36 37 listView1.EndUpdate(); 38 }; 39 btnSend.Click += (sender, args) => 40 { 41 var msg = txtMessage.Text; 42 foreach (ListViewItem item in listView1.CheckedItems) 43 { 44 var hwnd = Convert.ToInt32(item.Text); 45 Console.WriteLine(Resources.Form1_Form1_SendMessage_To__0_, item.SubItems[0].Text); 46 dm.BindWindowEx(hwnd, "gdi", "windows", "windows", "", 0); 47 dm.SetWindowState(hwnd, 1); 48 dm.SetWindowState(hwnd, 8); 49 dm.SendString2(hwnd, msg); 50 dm.KeyDown(13); 51 dm.KeyUp(13); 52 dm.SetWindowState(hwnd, 9); 53 dm.SetWindowState(hwnd, 2); 54 dm.UnBindWindow(); 55 } 56 }; 57 58 btnReload.PerformClick(); 59 } 60 }
原文地址:https://www.cnblogs.com/Running_Zhang/p/11388381.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 谈Vue组件的is特性
- 基于日志的回放对比系统设计
- 【收藏向】常用Java排错工具单
- MYSQL数据同步之基于GTID事务数据同步
- 【风险通告】XXL-JOB远程命令执行漏洞
- MySQL8.0特性之redo logging动态开关
- 3分钟短文:Laravel模型集合跟基类真不一样,别混为一谈
- 3分钟短文:Laravel模型一对一一对多关系真的乱吗?
- 3分钟短文:Laravel请求对象方法极多,可不是花拳绣腿
- 3分钟短文:Laravel验证用户输入,不要把啥都存到系统里
- 3分钟短文:Laravel用户自定义命令行简明教程
- 3分钟短文:Laravel命令行参数和可选项分不清?怎么可能!
- 《Offer一箩筐》求职之前你必须知道的 4 件事!!
- 3分钟短文:有趣的Laravel命令行交互,输入和输出!
- MySQL limit导致的执行计划差异