Pythonは自動的に指定されたマイクロ手紙の友人への情報や画像を送信します

いずれかの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  

公開された46元の記事 ウォンの賞賛9 ビュー3647

おすすめ

転載: blog.csdn.net/weixin_41896770/article/details/102788806