我正在尝试编写一个与我的stickies副本交互的python 脚本。我在 Python 如何与 WM_COPYDATA 结构交互方面遇到了麻烦,不幸的是我无法在网上找到很多示例。
使用代码:
import struct
import win32con
import win32gui
import struct, array
int_buffer = array.array("L", [0])
char_buffer = array.array('b', 'do new sticky')
int_buffer_address = int_buffer.buffer_info()[0]
char_buffer_address, char_buffer_size = char_buffer.buffer_info
copy_struct = struct.pack("pLp",
int_buffer_address,
char_buffer_size, char_buffer_address)
hwnd = win32gui.FindWindow("ZhornSoftwareStickiesMain", None)
win32gui.SendMessage(w, WM_COPYDATA, hwnd, copy_struct)
我收到以下错误:
C:\Users\%userprofile%\Desktop>python sender.py
Traceback (most recent call last):
File "sender.py", line 7, in <module>
char_buffer = array.array('b', 'do new sticky')
TypeError: an integer is required
我似乎无法弄清楚为什么会出现这样的错误。有任何想法吗?
编辑:一些部分工作的代码
import struct
import win32con
import win32gui
import struct, array
int_buffer = array.array("L", [0])
char_buffer = array.array('b', b"do manage open")
int_buffer_address = int_buffer.buffer_info()[0]
# Add () to buffer_info to call it.
char_buffer_address, char_buffer_size = char_buffer.buffer_info()
# Need P type for the addresses.
copy_struct = struct.pack("PLP",int_buffer_address,char_buffer_size, char_buffer_address)
hwnd = win32gui.FindWindow(None, "ZhornSoftwareStickiesMain")
win32gui.SendMessage(hwnd, win32con.WM_COPYDATA, None, copy_struct)