いずれかのPython自動的に指定されたQQの友人に情報や画像を送信
原理は、クラスの使用に同じではありませんが、同じではありませんが、QQは自動的にフォーカスし、いないマイクロ文字は、それはをクリックしてマウスの助けを必要としますので、少し要件があり、マイクロ文字検索ボックスのニーズの位置が指定された場所に配置することですここで私は、座標(100、40)を設定し、友人への検索は、友人をクリックし、座標(100、120)の位置
import os
import win32gui #pywin32-221.win-amd64-py3.7.exe
import win32con
from ctypes import *
import win32clipboard as w
import time
from PIL import Image #pip install pillow
#pip install -i https://pypi.douban.com/simple pillow
import win32api
#发送文字
def setText(info):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, info)
w.CloseClipboard()
#发送图片
def setImage(imgpath):
im = Image.open(imgpath)
im.save('1.bmp')
aString = windll.user32.LoadImageW(0, r"1.bmp", win32con.IMAGE_BITMAP, 0, 0, win32con.LR_LOADFROMFILE)
if aString != 0: ## 由于图片编码问题 图片载入失败的话 aString 就等于0
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_BITMAP, aString)
w.CloseClipboard()
#微信搜索框不会自动获取焦点,故需要模拟鼠标点击到搜索框的位置
def m_click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
def pasteInfo():
win32api.keybd_event(17,0,0,0) #ctrl键位码是17
win32api.keybd_event(86,0,0,0) #v键位码是86
win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
#定位微信窗口,进行昵称备注的搜索(需点击两下才能获取到焦点)
def searchByUser(uname):
hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')
setText(uname)
m_click(100,40)
time.sleep(0.5)
m_click(100,40)
pasteInfo()
time.sleep(1)
m_click(100,120)#搜索到之后点击
#win32api.keybd_event(13,0,0,0)#回车
#win32api.keybd_event(13,0,KEYEVENTF_KEYUP,0)
#win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
#win32gui.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
def sendInfo():
time.sleep(1)
pasteInfo()
time.sleep(1)
win32api.keybd_event(18, 0, 0, 0) #Alt
win32api.keybd_event(83,0,0,0) #s
win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)
#发送完信息之后关闭窗口(跟QQ不一样,可以不关闭),接着搜索发送
def closeByUser(uname):
hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')
win32api.keybd_event(18,0,0,0) #Alt
win32api.keybd_event(115,0,0,0) #F4
win32api.keybd_event(115,0,KEYEVENTF_KEYUP,0)
win32api.keybd_event(18,0,KEYEVENTF_KEYUP,0)
'''
searchByUser('Tony老师')
setText('Tony老师理发师')
sendInfo()
time.sleep(1)
searchByUser('文件传输助手')
setText('地表最强CPU')
sendInfo()
'''
#获取无后缀的图片名称
def getNosuffixImgName(imgname):
return os.path.splitext(imgname)[0]
imgdir='imgs/'
imgs=os.listdir(imgdir)
for img in imgs:
searchByUser(getNosuffixImgName(img))
setImage(imgdir+img)
sendInfo()
time.sleep(1)
-i https://pypi.douban.com/simple pyInstallerのインストールPIP
pyInstallerの-F -w -i xxx.ico yy.py
ディレクトリdistの下に生成されたexeファイル
keybd_event()関数のプロトタイプ
VOID keybd_event(
BYTE BVK、//バーチャルキーコード
BYTE BSCAN、//ハードウェアスキャンコード
DWORD dwFlagsパラメータ、//様々な機能オプションを指定するフラグ
DWORD dwExtraInfo //キーストロークに関連する追加データ
)プロトタイプからわかるように、keybd_event()4つのパラメータがあります。
そのようなキーVK_RETURNを入力として第1の仮想キーボタン、タブ・キーはVK_TAB(他の特定付録:共通鍵テーブル鍵アナログ)です。
第2のパラメータは、代わりに0の行を、スキャンコードは、一般的に設けられていないです。
「KEYEVENTF_KEYUP」をkeyUpイベントに設定されている場合は0にセットは、それが、KEYDOWNできれば第三のパラメータは、オプションフラグです。
第四のパラメータは、一般的に0に設定されています。
英数字キー、数字キーパッドのキーは、他のキーのキーとして機能する
結合コード結合コード結合コードボンドコード
A 65 0 96フロリダ112 Backspaceキー8
B 113の66 1 97 F2タブ9
C 67 2 98 F3 114クリア12は
D入力F4 115 3 99 68 13である
E 69 4 1 16 16 100 F5シフト
F.が70 17 5 101 F6 117コントロール
G 71は、Altキーである。6 102 1 18 F7 18は
H F8 72 103 119 7キャップ20がロック
I 73は、Escキーである。8 120 27 104 F9
J 74 9 105 F10 121スペースキー32
K 75 * 106 F11 122ページ最大33
L 76 + 107 F12 123ページダウン34
M 77は、108を入力- -エンド35
N 78から109 - -ホーム36
O 79。110 - -左矢印37
P 111分の80 - -上向き矢印38
Q 81 - - - -右矢印39
R 82 - - - -下向き矢印40
S 83 - - - - -挿入45
T 84 - - - -削除46
U 85 - - - -ヘルプ47
V 86 - - - -のNum Lock 144
87 W
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57