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

在批量发送消息给联系人之前,需要采集到微信中的联系人和群聊数据

效果展示

获取联系人

(4)微信UI自动化-联系人采集(C#)_第1张图片

 接下来我们进行联系人采集的详细步骤

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

(4)微信UI自动化-联系人采集(C#)_第2张图片

直接贴代码

   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)当通讯录面板置为焦点后,我们发现我们微信的联系人信息全部在一个滚动面板中。

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

 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);
                    }
                }
            }
        }

将联系人面板中的子窗体控件全部遍历出来。

执行完代码后我们会发现如果我们的联系人面板出现滚动条后,遍历出来的控件只能获取到窗体视觉区域内的联系人。那么我们需要控制滚动条自动滚动,并循环调用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 > 1)
                        {
                            //如果滚动比例达到100%设置为1
                            scroll = 1;
                        }

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

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

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

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

上一篇(3)微信UI自动化-热键管理(C#)

下一篇(5)微信UI自动化-实现静默鼠标点击(C#)

因为文章所表达的意思可能无法满足每一位阅读需求,需要源码或者支持请联系作者QQ 978124155

你可能感兴趣的:(微信自动化,.net,微信,ui,自动化)