代码
import time
import uiautomation as auto
def selectSessionFromName(name, wait_time=0.1):
search.Click()
auto.SetClipboardText(name)
search.SendKeys('{Ctrl}v')
# 等待微信索引搜索跟上
time.sleep(wait_time)
search.SendKeys("{Enter}")
def send_msg_test(content):
edit = wechatWindow.EditControl(Name='小号')
edit.SendKeys(content)
sendButton = wechatWindow.ButtonControl(Name='发送(S)')
sendButton.Click()
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive()
search = wechatWindow.EditControl(Name='搜索')
selectSessionFromName("小号") #点击小号
send_msg_test(content="测试文字")
# messages = wechatWindow.ListControl(Name='消息')
# for message in messages.GetChildren():
# content = message.Name
# print(content)
单人信息发送
import time
import uiautomation as auto
def selectSessionFromName(name, wait_time=0.1):
search.Click()
auto.SetClipboardText(name)
search.SendKeys('{Ctrl}v')
# 等待微信索引搜索跟上
time.sleep(wait_time)
search.SendKeys("{Enter}")
def send_msg_test(content):
edit = wechatWindow.EditControl(Name='小号')
edit.SendKeys(content)
sendButton = wechatWindow.ButtonControl(Name='发送(S)')
sendButton.Click()
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive()
search = wechatWindow.EditControl(Name='搜索')
selectSessionFromName("小号") #点击小号
send_msg_test(content="测试文字")
# messages = wechatWindow.ListControl(Name='消息')
# for message in messages.GetChildren():
# content = message.Name
# print(content)
获取好友昵称列表
import uiautomation as auto
import time
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive() #打开微信界面
# 点击通讯录
button = wechatWindow.ButtonControl(Name='通讯录')
button.Click()
# 点击通讯录管理
administration = wechatWindow.ButtonControl(Name="通讯录管理")
administration.Click()
communication_administration = auto.WindowControl(Name="通讯录管理", ClassName="ContactManagerWindow")
# 将鼠标放至内容的中心,滚轮对联系人列表才能生效
communication_administration.MoveCursorToMyCenter()
list1 = communication_administration.ListControl(Name="")
# a表示存储列表,b表示计数器,flag控制代码是否退出
# 这里也定义了初始时间,方便代码运行结束查看代码运行时间。
a = []
b = 1
flag = True
start_time = time.time()
print("""开始时间:{}""".format(start_time))
# 这里我采用的是类似的一直执行的代码,只不过我这里用,flag控制代码是否继续运行,而flag由我们在滚轮滚到底部时,按空格键改变flag值,最终停止运行代码
while flag:
list1 = communication_administration.ListControl(Name="")
#communication_administration.MoveCursorToMyCenter() 表示将鼠标放至内容的中心,
#由于这里将其放到通讯录管理页面的中心,由于这样,鼠标在联系人列表这边,因此滚轮对联系人列表才能生效。
nickname = list1.GetChildren()[0].TextControl()
'''判断是不是在列表a中,如果列表中没有,则添加'''
if nickname.Name not in a:
print(b, '', nickname.Name)
b += 1
a.append(nickname.Name)
with open('name.txt', 'a', encoding='utf-8') as f: #②首先我们定位到每次显示的第一个联系人,判断其是否在列表a中,如果不在,就添加,并且保存到name.txt文件中;
f.write(nickname.Name)
f.write('\n')
# 滚轮下滚
auto.WheelDown(waitTime=0.01) #不管该判断成不成立,都执行鼠标滚轮下滚的操作;
# 手动实现滚轮滚动到底操作
# 空格
if auto.IsKeyPressed(auto.Keys.VK_SPACE):
print("到底了") #④滚到最底端的时候,由于笔者目前没有较好的方法判断其是否在最底端,
# 因此采用人工按空格的方式来让代码知道滚轮到最底端了,然后在该页面遍历所有联系人元素,判断其是否存在列表中,不在则添加,并添加到name.txt文件中;
for j in list1.GetChildren()[1:]:
last_nickname = j.TextControl()
if last_nickname not in a:
print(b, '', last_nickname.Name)
b += 1
a.append(last_nickname)
with open('name.txt', 'a', encoding='utf-8') as f:
f.write(last_nickname.Name)
f.write('\n')
print(a) #最后打印列表a,更改flag,打印代码运行时间。
flag = False
end_time = time.time()
sum_time = end_time - start_time
print("""运行时间:{}s""".format(sum_time))
获取好友所有信息代码
# -*- coding: utf-8-*-
import uiautomation as auto
import time
import pandas as pd
df = []
columns = ['序号', '昵称', '备注', '标签'] # excel的标题栏
# ToDo 这里需要更改微信所在地址,可通过桌面微信图标右键打开文件所在的位置查找到路径
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive() #打开微信界面
# 点击通讯录
button = wechatWindow.ButtonControl(Name='通讯录')
button.Click()
# 点击通讯录管理
administration = wechatWindow.ButtonControl(Name="通讯录管理")
administration.Click()
communication_administration = auto.WindowControl(Name="通讯录管理", ClassName="ContactManagerWindow")
# 将鼠标放至内容的中心,滚轮对联系人列表才能生效
communication_administration.MoveCursorToMyCenter()
list1 = communication_administration.ListControl(Name="")
# a表示存储列表,b表示计数器
a = []
b = 1
flag = True
start_time = time.time()
print("""开始时间:{}""".format(start_time))
while flag:
list1 = communication_administration.ListControl(Name="")
# nickname = list1.GetChildren()[0].TextControl()
nickname = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[1].GetChildren()[1]
beizhu = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[2].ButtonControl()
biaoqian = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[3].ButtonControl()
# print(nickname.Name)
# print(beizhu.Name)
# print(biaoqian.Name)
'''判断是不是在列表a中,如果'''
if len(a) == 0 or nickname.Name != a[-1]:
# print(nickname.Name)
# print(beizhu.Name)
# print(biaoqian.Name)
# print("="*50)
print(b, '', nickname.Name)
df.append([b, nickname.Name, beizhu.Name, biaoqian.Name])
d = pd.DataFrame(df, columns=columns)
d.to_excel("微信朋友信息.xlsx", index=False)
b += 1
a.append(nickname.Name)
end_time = time.time()
sum_time = end_time - start_time
# 滚轮下滚
if sum_time%10==0:
auto.WheelDown(waitTime=0.01)
# 手动实现滚轮滚动到底操作
# 空格
if auto.IsKeyPressed(auto.Keys.VK_SPACE):
print("到底了")
for j in list1.GetChildren()[1:]:
last_nickname = j.TextControl()
if last_nickname != a[-1]:
print(b, '', last_nickname.Name)
last_beizhu = j.GetFirstChildControl().GetFirstChildControl().GetChildren()[2].ButtonControl()
last_biaoqian = j.GetFirstChildControl().GetFirstChildControl().GetChildren()[3].ButtonControl()
df.append([b, last_nickname.Name, last_beizhu.Name, last_biaoqian.Name])
d = pd.DataFrame(df, columns=columns)
d.to_excel("微信朋友信息.xlsx", index=False)
b += 1
a.append(last_nickname)
print(a)
flag = False
end_time = time.time()
sum_time = end_time - start_time
print("""运行时间:{}s""".format(sum_time))