整理 | 小耕家的喵大仙
出品 | CSDN(ID:lichao19897314)
关联源码及工具下载
https://download.csdn.net/download/lichao19897314/90096681
往期知识回顾:
👆 以上文章是以往对使用自动化技术操作微信的一些文章及案例!!!!
因为文章可能无法满足读者要求,本人企鹅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)https://blog.csdn.net/lichao19897314/article/details/122720286
下一篇 (5)C#实现针对微信窗体鼠标静默点击-微信UI自动化https://blog.csdn.net/lichao19897314/article/details/122961362
因为文章可能无法满足读者要求,本人企鹅978124155