c# 免注册调用大漠插件100%完美识别文字

摘要:
string.IsNullOrWhiteSpace).Select);windInfoBindingSource.DataSource=list.Select.ToList();或者枚举所有窗口:inthwd=dm.FindWindow;//CabinetWClassListlistWindows=newList();string[]sList=dm.EnumWindow.Split(',');//.Where(x=˃!

c#免注册调用大漠插件100%完美识别文字

下载:https://download.csdn.net/download/xxq931123/10875122

绑定 模式:http://zy.anjian.com/?action-viewthread-tid-239647

test 发QQ消息:

  public MainForm()
        {
            InitializeComponent();
            dm = new CDmSoft("");
            this.WindowState = FormWindowState.Minimized;
            // this.StartPosition = FormStartPosition.CenterScreen;
        }
        CDmSoft dm;
        private void MainForm_Load(object sender, EventArgs e)
        {
            int hwd = dm.FindWindow("TXGuiFoundation", "");//CabinetWClass
            Text = "" + hwd;
            if (hwd > 0)
            {
                int dm_ret = dm.BindWindowEx(hwd, "gdi", "windows", "windows", "dx.public.fake.window.min", 0);
                System.Threading.Thread.Sleep(1000);
                if (dm_ret == 0)
                 {
                   MessageBox.Show("failed");
                   return;
                }
                // MessageBox.Show(  dm.GetWindowTitle(hwd));
                dm.MoveWindow(hwd, 1, 1);
                // System.Threading.Thread.Sleep(2000);
                dm.SetWindowSize(hwd, 694,615);
                //dm.SetWindowText(hwd, "hello");
                dm.MoveTo(113, 263);
                dm.LeftClick();
                dm.delay(1000);
                dm.MoveTo(467, 540);
                dm.LeftClick();
                Thread.Sleep(50);
                dm.SetWindowState(hwd, 1);//激活窗口
                dm.SetWindowState(hwd, 8);
                Thread.Sleep(50);
                dm.SendString2(hwd, "hello你好");
                Thread.Sleep(200);
                dm.KeyDown(13);//ENTER
                dm.KeyUp(13);
                dm.SetWindowState(hwd, 9);//设置为非活动窗口
                //dm.SetWindowState(hwd, 2);//最小化
                dm.UnBindWindow();//解绑窗口
            }
            else
            {
                MessageBox.Show("can not find window");
            }
        }
}

查找微信和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();

或者枚举所有窗口:

int hwd = dm.FindWindow("TXGuiFoundation", "");//CabinetWClass
            List<WindowInfo> listWindows = new List<WindowInfo>();
            string[]  sList = dm.EnumWindow(0, "", "TXGuiFoundation", 18).Split(',');//.Where(x => !string.IsNullOrWhiteSpace(x)).Select(x => Convert.ToInt32(x)));
            foreach (string s in sList) {
                if (!string.IsNullOrEmpty(s)) {
                    hwd = Convert.ToInt32(s);
                    WindowInfo wd = new WindowInfo();
                    wd.ClassName = dm.GetWindowClass(hwd);
                    wd.Handle=hwd;
                    wd.Title= dm.GetWindowTitle(hwd);
                    listWindows.Add(wd);
                }
            }

public class WindowInfo {

public int Handle;
public string ClassName;
public string Title;
}

普通窗口不用激活、设置前置窗口也能模拟dm_bindRet = dm.BindWindowEx(hwd, "gdi", "windows3", "windows", "dx.public.fake.window.min", 0);

最后说下大漠缺点就是容易报毒。。。。。。。。。。。。

能考大漠API:https://www.cnblogs.com/xiongyunsheng/p/11254333.html

免责声明:文章转载自《c# 免注册调用大漠插件100%完美识别文字》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenResty 反向代理的用法与技巧vscode + WSL +Ubuntu编程解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 字符串常用操作(String类)

字符串查找 String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法。 1、indexOf(String s) 该方法用于返回参数字符串s在指定字符串中首次出现的索引位置,当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回-1 1 String str ="We a...

QQ会员AMS平台PHP7升级实践

作者:徐汉彬链接:https://zhuanlan.zhihu.com/p/21493018来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统。AMS是一个主要采用PHP语言实现的活动运营平台, CGI日请求3亿左右,高峰期达到8亿...

delphi计算两个时间差-转

uses DateUtils;   var S1, S2: string; T1, T2: TDateTime; D, H, M, S: Integer; Value: Int64; begin S1 := '2015/09/23 15:44:50'; S2 := '2013/09/22 16:47:51'; T1 := Str...

Java之数据字典实现

数据字典核心代码实现: @Component public classDictMap { @Autowired privateSysDictDataMapper dictDataMapper; private static HashMap<String, String> hashMap = new HashMap<...

Hadoop 序列化

摘自:http://blog.csdn.net/zhang0558/article/details/53444533 序列化和反序列化以及hadoop数据类型 1.什么是序列化和反序列化   序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。   反序列化就是将收到 字节序列(或其他数据传输协议)或者是硬盘的持久...

手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理

摘自:https://www.cnblogs.com/goodAndyxublog/p/11880314.html 手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理 文章来源:https://studyidea.cn/java-hotswap 一、前言# 一天下午正在摸鱼的时候,测试小姐姐走了过来求助,说是需要改动测试环境 mock...