久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python驅(qū)動級按鍵

 F2967527 2022-01-25

實踐證明 pyinput會被游戲屏蔽

winio只適合PS/2 圓口鍵盤

下面使用

參考:https://mp.weixin.qq.com/s/WXf5JVyyFZqp-DYlGigL-g

win32api:

準(zhǔn)備:安裝好pywin32,,pip insatall pywin32

然后使用時

import win32api

import win32con   #導(dǎo)入這兩個模塊

import time  #導(dǎo)入時間模塊要有中斷時間

import ctypes

  1. def keydownup(num):
  2. MapVirtualKey = ctypes.windll.user32.MapVirtualKeyA
  3. time.sleep(0.4)
  4. win32api.keybd_event(num, MapVirtualKey(num, 0), 0, 0)
  5. time.sleep(0.2)
  6. win32api.keybd_event(num, MapVirtualKey(num, 0), win32con.KEYEVENTF_KEYUP, 0)

其中MapVirtualkey是掃描碼,一般不使用這個,,如果要制作控制游戲人物的腳本時一定要填入掃描碼才能在游戲中實現(xiàn)硬件級鍵盤模擬。

方法很簡單

win32api.keybd_event(虛擬碼,,掃描碼,,0,0)

第一個參數(shù)是虛擬碼有一些是不太一樣的,,需要自己根據(jù)自己的電腦測出相關(guān)的虛擬碼,,其中一些虛擬碼,

  1. left_arrow = 0x61
  2. up_arrow = 0x65
  3. right_arrow = 0x63
  4. down_arrow = 0x62
  5. a = 0x41
  6. d = 0x44
  7. x = 0x58

第二個參數(shù)是掃描碼,,如果一個一個去尋找掃描碼會很麻煩,,可以像我那樣,,在方法開始處或者程序起始處添加這么一句

MapVirtualKey = ctypes.windll.user32.MapVirtualKeyA

然后就可以傳入虛擬碼來尋找相應(yīng)的掃描碼

第三個是參數(shù)是作為判斷按下與抬起的標(biāo)識,按下時為0即可,,因為鍵盤的全過程是按下與抬起,,所有兩個keybd_event才是一個完整的過程,其中一定要給其中添加一個時間暫停的,,不然還是無法使用,,即使在操作臺或者pycharm上可以輸入,在游戲中便沒有效果了,,時間自己可以傳參數(shù)進(jìn)去,,也可以規(guī)定一個固定的值,這個時間便是你按住的時間

第四個參數(shù)直接為0即可

最重要的一點,,如果要在游戲中使用,,一定要以管理員的權(quán)限運行腳本,這樣才可以使用,。

參考自:https://blog.csdn.net/qq_33371343/article/details/78916751

一、pywin32常用函數(shù)
(1)獲取鼠標(biāo)位置
win32api.GetCursorPos()

(2)鼠標(biāo)左鍵按下
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

(3)鼠標(biāo)左鍵放開
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

(4)鼠標(biāo)右鍵按下
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

(5)鼠標(biāo)右鍵放開
 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

(6)設(shè)置鼠標(biāo)位置
win32api.SetCursorPos((x, y))

(7)鍵盤輸入事件
win32api.keybd_event(VK_CODE[word], 0, 0, 0)
win32api.keybd_event(VK_CODE[word], 0, win32con.KEYEVENTF_KEYUP, 0)

二,、封裝接口
(1)獲取當(dāng)前鼠標(biāo)位置
def cursor_point(self):
    '''
     獲取當(dāng)前鼠標(biāo)位置
    '''
    pos = win32api.GetCursorPos()
    return int(pos[0]), int(pos[1])

(2)鼠標(biāo)左擊事件
def mouse_left_click(self, new_x=None, new_y=None, times=1):
    '''
    鼠標(biāo)左擊事件
    :param new_x: 新移動的坐標(biāo)x軸坐標(biāo)
    :param new_y: 新移動的坐標(biāo)y軸坐標(biāo)1506240215
    :param times: 點擊次數(shù)
    '''
    self.mouse_move(new_x, new_y)
    time.sleep(0.05)
    while times:
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
        times -= 1

(3)鼠標(biāo)右擊事件
    def mouse_right_click(self, new_x=None, new_y=None):
        '''
        鼠標(biāo)右擊事件
        :param new_x: 新移動的坐標(biāo)x軸坐標(biāo)
        :param new_y: 新移動的坐標(biāo)y軸坐標(biāo)
        '''
        self.mouse_move(new_x, new_y)
        time.sleep(0.05)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

(4)移動鼠標(biāo)位置
def mouse_move(self, new_x, new_y):
    if new_y is not None and new_x is not None:
        point = (new_x, new_y)
        win32api.SetCursorPos(point)
        self.x = new_x
        self.y = new_y

(5)鍵盤輸入文本
def key_input(self, input_words=''):
    for word in input_words:
        win32api.keybd_event(VK_CODE[word], 0, 0, 0)
        win32api.keybd_event(VK_CODE[word], 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(0.1)

(6)鍵盤輸入事件
def key_even(self, input_key):
    win32api.keybd_event(VK_CODE[input_key], 0, 0, 0)
    win32api.keybd_event(VK_CODE[input_key], 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多