第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 ctypes 模塊通過引用 EnumChildWindows 將 Python 列表作為

如何使用 ctypes 模塊通過引用 EnumChildWindows 將 Python 列表作為

HUH函數(shù) 2023-06-06 16:32:48
我有以下使用模塊win32gui調(diào)用EnumChildWindows函數(shù)的工作 Python 代碼:import win32guidef func(hwnd, param):  param.append(hwnd)  return Truedef code():  arr = []  win32gui.EnumChildWindows(win32gui.GetDesktopWindow(), func, arr)  print(arr)code()win32gui.EnumChildWindows允許通過引用傳遞最后一個(gè)參數(shù)中的任何 Python 對象。我正在嘗試使用 module 做同樣的事情ctypes。我得到的最接近的是傳遞一個(gè) C 數(shù)組而不是 Python 列表,盡管它不是通過引用傳遞,因?yàn)楫?dāng)我在函數(shù)內(nèi)部更改變量時(shí),它不會(huì)在外部更改它的值。代碼如下:from ctypes import byref, POINTER, windll, WINFUNCTYPEfrom ctypes.wintypes import BOOL, HWND, LPARAMdef func(hwnd, param):  c_arr = HWND * (len(param) + 1)  param = c_arr(*param)  param[len(param) - 1] = hwnd  print(str(param[len(param) - 1]))  return Truedef code():  py_arr = []  c_arr = HWND * len(py_arr)  arr = c_arr(*py_arr)  WNDENUMPROC = WINFUNCTYPE(BOOL, HWND, HWND * len(py_arr))  windll.user32.EnumChildWindows.argtypes = [HWND, WNDENUMPROC, POINTER(HWND * len(py_arr))]  windll.user32.EnumChildWindows.restype = BOOL  windll.user32.EnumChildWindows(windll.user32.GetDesktopWindow(), WNDENUMPROC(func), byref(arr))  print(arr)code()
查看完整描述

1 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

win32gui經(jīng)過一段時(shí)間的搜索和嘗試不同的東西,我找到了C 中的代碼。

它使用對應(yīng)于ctypes.py_object.

工作代碼如下:

from ctypes import byref, py_object, windll, WINFUNCTYPE

from ctypes.wintypes import BOOL, HWND


def func(hwnd, param):

? param.append(hwnd)

? return True


def code():

? arr = []

? WNDENUMPROC = WINFUNCTYPE(BOOL, HWND, py_object)

? windll.user32.EnumChildWindows.argtypes = [HWND, WNDENUMPROC, py_object]

? windll.user32.EnumChildWindows.restype = BOOL

? windll.user32.EnumChildWindows(windll.user32.GetDesktopWindow(), WNDENUMPROC(func), arr)

? print(arr)


code()


查看完整回答
反對 回復(fù) 2023-06-06
  • 1 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號