(4)采集微信通讯录和联系人-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙

出品 | CSDN(ID:lichao19897314)

Q Q | 978124155

 往期知识回顾: 

(1)C#开启探索微信自动化之路-微信UI自动化

(2)C#创建微信窗体自动化实例-微信UI自动化

(3)C#针对系统热键管理-微信UI自动化

(4)C#采集微信通讯录和联系人-微信UI自动化

(5)C#实现针对微信窗体鼠标静默点击-微信UI自动化

(6)C#搜索微信通讯录联系人-微信UI自动化

(7)C#实现微信消息群发-微信UI自动化

(8)C#监控微信进程运行状态-微信UI自动化

(9)C#监控微信网络连接状态-微信UI自动化

(11)C#实现微信窗体尺寸跟随调整-微信UI自动化

(12)C#采集微信聊天记录及历史消息-微信UI自动化

(13)C#实现自动回复微信消息-微信UI自动化

(14)C#针对微信界面元素截图操作-微信UI自动化

(15)C#实现对微信窗体的行为管控-微信UI自动化

(16)C#实现微信多开-微信UI自动化

(17)C#实现微信聊天文件接收及下载-微信UI自动化

👆 以上文章是以往对使用自动化技术操作微信的一些文章及案例!!!!

因为文章可能无法满足读者要求,如需源码和支持请联系本人QQ 978124155 

本篇目的

在进行后续一系列自动化操作之前,如自动发送消息,获取微信聊天消息,获取聊天文件,都需要针对微信通讯录中的某个联系人或者群做操作,所以我们需要先采集到微信通讯录和联系人的信息。

效果演示

实现思路

  我们要如何采集到微信中的联系人或通讯录列表呢?

(1)找到通讯录按钮元素执行静默点击操作。

(2)找到联系人面板元素并执行面板滚动操作

(3)滚动过程中获取面板List对象中的ListItem项中的各个子元素

技术细节

(1)找到通讯录的按钮元素,发送点击事件将通讯录面板置为选中状态

通过UI元素路径查找到了通讯录UI元素,并执行点击事件。

   private void ClickContacts()
        {
             //通过XPATH找到通讯录按钮
            var ele = UI_WX_Window.Current.Find("/Pane[2]/Pane[1]/Button[3]");
            //发送点击事件
            UI_WX_Window.Current.ClickElement(ele);
        }

/Pane[2]/Pane[1]/Button[3]是XPath表达式,等于通讯录按钮在窗体中的路径。

然后发送点击事件,将联系人面板展示出来。

(2)当通讯录面板置为焦点后,微信的联系人信息全部在一个List滚动面板中。

我们通过XPATH方式找到联系人List面板的对象。

 var list = UI_WX_Window.Current.Find("/Pane[2]/Pane[2]/Pane[2]/Pane/List");

接下来我们通过以下代码获取当前可视区域的联系人

 //获取当前可视区域的联系人
  private void GetWXContact()
        {
            UI_WX_Window.Current.Focus();

            var list = UI_WX_Window.Current.Find("/Pane[2]/Pane[2]/Pane[2]/Pane/List");

            if (list != null)
            {
                 //获取联系人面板中所有的子控件
                var child = list.FindAllChildren();
                //遍历控件数
                foreach (var item in child)
                {
                    var wxName = item.Name;

                    if (!Contacts.Contains(wxName) && wxName != "新的朋友" && wxName != "公众号")
                    {
                        Contacts.Add(wxName);
                        Log.WXLog.Current.Log(wxName);
                    }
                }
            }
        }

将联系人List面板中的子控件全部遍历出来并将ListItem中的联系人获取出来。

执行完代码后我们会发现如果我们的联系人面板出现滚动条后,遍历出来的控件只能获取到窗体视觉区域内的联系人。那么我们需要控制滚动条自动滚动,并循环调用GetWXContact()方法来获取联系人。

  //获取联系人面板
            var list = UI_WX_Window.Current.Find("/Pane[2]/Pane[2]/Pane[2]/Pane/List");

            if (list != null)
            {
                //开启一个线程控制联系人滚动面板进行滚动
                Thread th = new Thread(new ThreadStart(() =>
                {
                    int i = 0;

                    while (true)
                    {
                        //获取滚动面板的视图
                        var contactScroll = list.Patterns.Scroll.Pattern;

                        //VerticalViewSize为当前可视区域在整个滚动面板滚动区域高度中的比例 
                        var scroll = contactScroll.VerticalViewSize * i;

                        if (scroll > 0)
                        {
                            //如果滚动比例达到100%设置为1
                            scroll = 0;
                        }

                        //使用flaui组件将滚动面板的视图设置到滚动的位置
                        contactScroll.SetScrollPercent(1, scroll); 

                        //滚动完成后在继续获取联系人
                        GetWXContact(); 

                        i++; 
                    }
                }));
                th.Start();
            }

通过上述的代码就能将我们微信中的联系人和群信息全部采集出来!

上一篇 (3)C#采用热键终止微信采集任务-微信UI自动化(.Net)icon-default.png?t=N7T8https://blog.csdn.net/lichao19897314/article/details/122720286

下一篇 (5)C#实现针对微信窗体鼠标静默点击-微信UI自动化icon-default.png?t=N7T8https://blog.csdn.net/lichao19897314/article/details/122961362

因为文章可能无法满足读者要求,如需源码和支持请联系本人QQ 978124155 

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小耕家的喵大仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值