C#调用大漠插件,发送QQ和微信消息
程序员文章站
2022-04-14 10:15:42
大漠插件就不过多介绍了,不知道的请查下百度。主要是讲解C#怎么调用大漠插件。 大漠插件提供了COM版本,C#直接点击引用,添加即可。然后注册下大漠插件到系统文件夹,注册代码如下: 调用方法: 实例化大漠模块: 查找微信和QQ的聊天窗口,根据窗口类名来进行模糊查找,然后得到窗口句柄,根据窗口句柄得到窗 ......
大漠插件就不过多介绍了,不知道的请查下百度。主要是讲解c#怎么调用大漠插件。
大漠插件提供了com版本,c#直接点击引用,添加即可。然后注册下大漠插件到系统文件夹,注册代码如下:
1 static string autoregcom(string strcmd) 2 { 3 string rinfo; 4 try 5 { 6 process myprocess = new process(); 7 processstartinfo myprocessstartinfo = new processstartinfo("cmd.exe"); 8 myprocessstartinfo.useshellexecute = false; 9 myprocessstartinfo.createnowindow = true; 10 myprocessstartinfo.redirectstandardoutput = true; 11 myprocess.startinfo = myprocessstartinfo; 12 myprocessstartinfo.arguments = "/c " + strcmd; 13 myprocess.start(); 14 streamreader mystreamreader = myprocess.standardoutput; 15 rinfo = mystreamreader.readtoend(); 16 myprocess.close(); 17 rinfo = strcmd + "\r\n" + rinfo; 18 return rinfo; 19 } 20 catch (exception ex) 21 { 22 return ex.message; 23 } 24 }
调用方法:
1 //注册大漠 2 var regresult = autoregcom("regsvr32 -s dm.dll");
实例化大漠模块:
private static dmsoft _dmsoft = new dmsoft();
查找微信和qq的聊天窗口,根据窗口类名来进行模糊查找,然后得到窗口句柄,根据窗口句柄得到窗口的标题、类名信息(qq聊天窗口的类名是:txguifoundation,微信的聊天窗口类名是:chatwnd):
var list = new list<int>(); list.addrange(_dmsoft.enumwindow(0, "", "txguifoundation", 18).split(',').where(x => !string.isnullorwhitespace(x)).select(x => convert.toint32(x))); list.addrange(_dmsoft.enumwindow(0, "", "chatwnd", 18).split(',').where(x => !string.isnullorwhitespace(x)).select(x => convert.toint32(x))); windinfobindingsource.datasource = list.select(x => new windinfo() { handle = x, classname = _dmsoft.getwindowclass(x), title = _dmsoft.getwindowtitle(x), }).tolist();
拿到窗口句柄剩下的事情就好办了。往窗口里面投递文本消息->模拟鼠标按键enter发送消息。
1 foreach (var windinfo in w.where(x => x.enable)) 2 { 3 _dmsoft.bindwindowex(windinfo.handle, "gdi", "windows", "windows", "", 0); 4 thread.sleep(50); 5 _dmsoft.setwindowstate(windinfo.handle, 1); 6 _dmsoft.setwindowstate(windinfo.handle, 8); 7 thread.sleep(50); 8 _dmsoft.sendstring2(windinfo.handle, content); 9 thread.sleep(200); 10 _dmsoft.keydown(13); 11 _dmsoft.keyup(13); 12 _dmsoft.setwindowstate(windinfo.handle, 9); 13 _dmsoft.setwindowstate(windinfo.handle, 2); 14 _dmsoft.unbindwindow(); 15 }
1、通过 bindwindowex 方法绑定窗口
2、通过 setwindowstate 设置窗口为正常模拟并且设置窗口为激活状态(为了获取到输入焦点)
3、sendstring发送文本到窗口,因为目前窗口已经获取到输入焦点,所以直接投递文本即可
4、模拟按键 enter ,enter键在大漠模块里面的虚拟键代码是13,模拟进行按下和弹起的操作,因为大漠模块里面默认设置了按下和弹起操作的间隔时间,所以这里我们不需要再次设置。
5、通过 setwindowstate 设置窗口为取消激活状态,并且设置窗口最小化
6、解绑窗口
大漠插件从3.1235开始进行收费,我使用的是 3.1233 版本免费版的,大漠插件下载地址我也打包了,包含了官方的帮助文档:
链接: https://pan.baidu.com/s/1vjrdpl3scslxbpxfawz_5a 提取码: mu25