av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

python中用ctypes模擬點(diǎn)擊的實(shí)例講解

瀏覽:70日期:2022-07-04 10:45:47

在小編學(xué)習(xí)python中的模擬點(diǎn)擊之前,我們想要對(duì)某一項(xiàng)操作進(jìn)行自動(dòng)指令的重復(fù),可以選擇大家熟知的按鍵精靈。那么對(duì)比python的模擬點(diǎn)擊,小編還是覺得python中使用更加方便。這樣說不能讓有些小伙伴信服,下面小編就以一個(gè)以小游戲?yàn)槔谖覀儗懲阠types模擬點(diǎn)擊后用python運(yùn)行,看看游戲體驗(yàn)效果。

按鍵精靈提供的窗口api性能并不算的上太好。但是將整個(gè)邏輯搬到python上,并提供了自己所寫的api后,速度有了很大的提升。

直接用python調(diào)用,獲取特定點(diǎn)位置上的顏色,非白色就發(fā)送點(diǎn)擊指令。然后循環(huán)等待下一個(gè)黑色塊的到來。同時(shí)設(shè)定定時(shí)時(shí)間,若長(zhǎng)時(shí)間依舊是這個(gè)顏色,證明游戲結(jié)束,直接退出。代碼如下:

WindowFunction = ctypes.windll.LoadLibrary('E:Python HackDLLScreenFunction.dll') DllGetPixel = WindowFunction.GetWindowPixel DllGetPixel.argtypes=[ctypes.wintypes.HWND,ctypes.wintypes.c_int,ctypes.wintypes.c_int] DllGetPixel.restypes=[ctypes.wintypes.c_uint32] DllGetMultiPixel = WindowFunction.GetWindowMultiPixel DllGetMultiPixel.argtypes=[ctypes.wintypes.HWND,ctypes.wintypes.c_void_p,ctypes.wintypes.c_void_p] DllGetMultiPixel.restypes=[ctypes.wintypes.c_int]cMulti = (ctypes.wintypes.c_int * 17)(Pos0.x,Pos0.y,Pos1.x,Pos1.y,Pos2.x,Pos2.y,Pos3.x,Pos3.y, Pos0.x,Pos0.y-5,Pos1.x,Pos1.y-5,Pos2.x,Pos2.y-5,Pos3.x,Pos3.y-5, 0) dwLen = DllGetMultiPixel(wHWND,byref(cMulti),None) RGB = (ctypes.wintypes.DWORD * dwLen)() quit = False while not quit: DllGetMultiPixel(wHWND,byref(cMulti),byref(RGB))flag = 0 if not RGB[0] == 0xfff5f5f5 or not RGB[4] == 0xfff5f5f5: EmuCursorClick(rect.left+Pos0.x,rect.top+Pos0.y) flag = 1 elif not RGB[1] == 0xfff5f5f5 or not RGB[5] == 0xfff5f5f5: EmuCursorClick(rect.left+Pos1.x,rect.top+Pos1.y) flag = 2 elif not RGB[2] == 0xfff5f5f5 or not RGB[6] == 0xfff5f5f5: EmuCursorClick(rect.left+Pos2.x,rect.top+Pos2.y) flag = 3 elif not RGB[3] == 0xfff5f5f5 or not RGB[7] == 0xfff5f5f5: EmuCursorClick(rect.left+Pos3.x,rect.top+Pos3.y) flag = 4 cot = 0 if flag == 0: quit=True elif flag == 1: RGB0 = DllGetPixel(wHWND,Pos0.x,Pos0.y) & 0xffffffff while not RGB0 == 0xfff5f5f5:time.sleep(0.05)cot += 1if cot > 20: quit=True breakRGB0 = DllGetPixel(wHWND,Pos0.x,Pos0.y) & 0xffffffff elif flag == 2: RGB1 = DllGetPixel(wHWND,Pos1.x,Pos1.y) & 0xffffffff while not RGB1 == 0xfff5f5f5: breakRGB1 = DllGetPixel(wHWND,Pos1.x,Pos1.y) & 0xffffffff elif flag == 3: RGB2 = DllGetPixel(wHWND,Pos2.x,Pos2.y) & 0xffffffff while not RGB2 == 0xfff5f5f5:RGB2 = DllGetPixel(wHWND,Pos2.x,Pos2.y) & 0xffffffff elif flag == 4: RGB3 = DllGetPixel(wHWND,Pos3.x,Pos3.y) & 0xffffffff while not RGB3 == 0xfff5f5f5:RGB3 = DllGetPixel(wHWND,Pos3.x,Pos3.y) & 0xffffffff print ’end’

ctypes 教程

注意:在本教程中的示例代碼使用 doctest 進(jìn)行過測(cè)試,保證其正確運(yùn)行。由于有些代碼在Linux,Windows或Mac OS X下的表現(xiàn)不同,這些代碼會(huì)在 doctest 中包含相關(guān)的指令注解。

注意:部分示例代碼引用了 ctypes c_int 類型。在 sizeof(long) == sizeof(int) 的平臺(tái)上此類型是 c_long 的一個(gè)別名。所以,在程序輸出 c_long 而不是你期望的 c_int 時(shí)不必感到迷惑 --- 它們實(shí)際上是同一種類型。

載入動(dòng)態(tài)連接庫ctypes 導(dǎo)出了 cdll 對(duì)象,在 Windows 系統(tǒng)中還導(dǎo)出了 windll 和 oledll 對(duì)象用于載入動(dòng)態(tài)連接庫。

通過操作這些對(duì)象的屬性,你可以載入外部的動(dòng)態(tài)鏈接庫。cdll 載入按標(biāo)準(zhǔn)的 cdecl 調(diào)用協(xié)議導(dǎo)出的函數(shù),而 windll 導(dǎo)入的庫按 stdcall 調(diào)用協(xié)議調(diào)用其中的函數(shù)。 oledll 也按 stdcall 調(diào)用協(xié)議調(diào)用其中的函數(shù),并假定該函數(shù)返回的是 Windows HRESULT 錯(cuò)誤代碼,并當(dāng)函數(shù)調(diào)用失敗時(shí),自動(dòng)根據(jù)該代碼甩出一個(gè) OSError 異常。

在 3.3 版更改: 原來在 Windows 下甩出的異常類型 WindowsError 現(xiàn)在是 OSError 的一個(gè)別名。

這是一些 Windows 下的例子。注意:msvcrt 是微軟 C 標(biāo)準(zhǔn)庫,包含了大部分 C 標(biāo)準(zhǔn)函數(shù),這些函數(shù)都是以 cdecl 調(diào)用協(xié)議進(jìn)行調(diào)用的。

>>> from ctypes import *>>> print(windll.kernel32) <WinDLL ’kernel32’, handle ... at ...>>>> print(cdll.msvcrt) <CDLL ’msvcrt’, handle ... at ...>>>> libc = cdll.msvcrt >>>

Windows會(huì)自動(dòng)添加通常的 .dll 文件擴(kuò)展名。

到此這篇關(guān)于python中用ctypes模擬點(diǎn)擊的實(shí)例講解的文章就介紹到這了,更多相關(guān)python中如何用ctypes模擬點(diǎn)擊內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产亚洲一区二区三区 | 天堂网亚洲 | 日韩一区二区三区视频 | www.日本在线 | 久久国产欧美 | 性一交一乱一伧老太 | 欧美一级视频 | 亚洲乱色 | 欧美成人一区二区三区 | 国产一区二区网站 | 蜜臀久久99精品久久久久宅男 | 一区二区三区在线播放 | 国产一二 | 亚洲免费精品视频 | 久热精品在线 | 国产日韩欧美亚洲 | 日韩欧美国产精品 | 成人在线小视频 | 一级a毛片 | 伊人久久综合 | 青青久草 | 999在线视频| 成人性色生活片 | 亚洲欧美综合另类 | 国产又粗又大又硬 | 天天天干 | 国产91av视频 | 亚洲成人免费在线观看 | 福利小视频 | 欧美国产综合 | 五月激情久久 | 免费黄色网址在线观看 | 精品久久久久久久久久久久久 | 欧美综合在线视频 | 青青草手机在线视频 | 韩国精品一区二区 | 午夜影院在线免费观看 | 亚洲一区二区免费 | 国产成人免费观看 | 色多多视频在线观看 | 日韩国产一区二区 |