[問題] 用ctypes抓ListView的資訊
學Python沒多久 第一次用ctypes 結果弄了好幾天還是沒辦法
要怎麼抓像vista下的檔案總管裡面的圖示資訊呢
我可以確定的是 我有找到windows的handle和他下面的listview的handle
(他的classname是SysListView32)
一些不需要傳struct的好像都是ok的
n_item = SendMessage(hList, LVM_GETITEMCOUNT, 0, 0)
和
SendMessage(hList, LVM_SETHOTITEM, 3, 0)
都是ok的
然後我想使用的是LVM_FINDITEM和LVM_GETITEM
不過可能是我struct的地方寫爛掉了 常常回傳的值都不一樣
多試次幾還會當掉 (Windows檔案總管已經停止運作)
下面是我寫的code 不知道哪邊有問題呢
網路上找不太到用python要抓listview資訊的code
class POINT(ctypes.Structure):
_fields_ = [
("x", ctypes.c_int),
("y", ctypes.c_int)]
class LVFINDINFO(ctypes.Structure):
_fields_ = [
("flags", ctypes.c_uint),
("psz", ctypes.c_char_p),
("lParam", ctypes.c_int),
("pt", POINT),
("vkDirection", ctypes.c_uint)]
class _LVITEM(ctypes.Structure):
_fields_ = [
("mask", ctypes.c_uint),
("iItem", ctypes.c_int),
("iSubItem", ctypes.c_int),
("state", ctypes.c_uint),
("stateMask", ctypes.c_uint),
("pszText", ctypes.c_char_p),
("cchTextmax", ctypes.c_int),
("iImage", ctypes.c_int),
("lParam", ctypes.c_int),
("iIndent", ctypes.c_int),
("iGroupId", ctypes.c_int),
("cColumns", ctypes.c_uint),
("puColumns", ctypes.POINTER(ctypes.c_uint)),
("piColFmt", ctypes.POINTER(ctypes.c_int)),
("iGroup", ctypes.c_int)]
def getItem(hList, n):
s_item = _LVITEM()
s_item.mask = LVIF_TEXT
s_item.pszText = ctypes.c_char_p('A' * 1024)
s_item.iItem = n
s_item.cchTextmax = 1024
tmp1 = ctypes.c_uint(0)
tmp2 = ctypes.c_int(0)
s_item.puColumns = ctypes.pointer(tmp1)
s_item.piColFmt = ctypes.pointer(tmp2)
print 'SendMessage = %d' % SendMessage(hList, LVM_GETITEMA, 0, ctypes.byref(s_item))
return s_item
def findItem(hList, string):
s_info = LVFINDINFO()
s_info.flags = LVFI_NEARESTXY
s_info.vkDirection = VK_HOME
s_info.psz = ctypes.c_char_p(string)
#s_info.lParam = 0
s_info.pt.x = 1291
s_info.pt.y = 297
print s_info
print s_info.flags
print s_info.psz
print s_info.lParam
print s_info.pt.x, s_info.pt.y
print s_info.vkDirection
print
n_find = SendMessage(hList, LVM_FINDITEMA, -1, ctypes.byref(s_info))
return n_find
學Python沒多久 上面也是自己寫的 如果有些用法或觀念不正確也請多指正 謝謝
還有 用win32api的話會比較方便嗎 因為它好像也沒有listview的相關函式
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.36
→
07/25 14:23, , 1F
07/25 14:23, 1F
→
07/25 14:24, , 2F
07/25 14:24, 2F
Python 近期熱門文章
PTT數位生活區 即時熱門文章