我在存儲器(RGB或任何格式我經由PIL /枕頭想要的)的圖標和我想與Shell_NotifyIcon
win32gui.Shell_NotifyIcon
這需要一個HICON
使用它。 如何將RGB像素放入HICON?
或者,即使那是浪費的,我甚至不會介意通過臨時文件做一個來回,並使用win32gui.LoadImage
,像這樣重裝吧:
from PIL import Image
#create example image with empty pixels:
img = Image.frombuffer("RGB", (32, 32), "\0"*32*32*3, "raw", "RGB", 0, 1)
img = img.convert("P")
img = img.resize((64, 64), Image.ANTIALIAS)
img.save("C:\\temp.ico", format="bmp")
import win32gui, win32api, win32con
flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
win32gui.LoadImage(None, "C:\\temp.ico", win32con.IMAGE_ICON, 0, 0, flags)
但這種失敗:pywintypes.error: (0, 'LoadImage', 'No error message available')
我只是找不到可以寫入的圖片格式,然後可以在IMAGE_ICON
模式下通過正確讀回並正確使用。看來只支持ICO
這種模式下的文件:我可以回讀PNG
或BMP
數據爲IMAGE_BITMAP
,但生成的句柄不能被Shell_NotifyIcon
使用。 有沒有辦法將IMAGE
轉換爲HICON
? (內存)
我認爲傳遞給'LoadImage'的第三個參數應該是'win32con.IMAGE_BITMAP'。 – martineau
如果你閱讀完整的文章,你會發現,當使用'IMAGE_BITMAP''時,'Shell_NotifyIcon'不能使用結果句柄。 – totaam
對不起。我讀了一些說:「我不知道這是否適用於所有情況,但在WinXP上,.ico可以是16x16,32x32或64x64大小的bmp。只需將擴展名從bmp更改爲ico,即可準備好走。」 – martineau