栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中接收WM_COPYDATA

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中接收WM_COPYDATA

我编写了以下琐碎的win32gui应用程序:

import win32con, win32api, win32gui, ctypes, ctypes.wintypesclass COPYDATASTRUCT(ctypes.Structure):    _fields_ = [        ('dwData', ctypes.wintypes.LPARAM),        ('cbData', ctypes.wintypes.DWORD),        ('lpData', ctypes.c_void_p)    ]PCOPYDATASTRUCT = ctypes.POINTER(COPYDATASTRUCT)class Listener:    def __init__(self):        message_map = { win32con.WM_COPYdata: self.onCopyData        }        wc = win32gui.WNDCLASS()        wc.lpfnWndProc = message_map        wc.lpszClassName = 'MyWindowClass'        hinst = wc.hInstance = win32api.GetModuleHandle(None)        classAtom = win32gui.RegisterClass(wc)        self.hwnd = win32gui.CreateWindow ( classAtom, "win32gui test", 0, 0,  0, win32con.CW_USEDEFAULT,  win32con.CW_USEDEFAULT, 0,  0, hinst,  None        )        print self.hwnd    def onCopyData(self, hwnd, msg, wparam, lparam):        print hwnd        print msg        print wparam        print lparam        pCDS = ctypes.cast(lparam, PCOPYDATASTRUCT)        print pCDS.contents.dwData        print pCDS.contents.cbData        print ctypes.wstring_at(pCDS.contents.lpData)        return 1l = Listener()win32gui.PumpMessages()

然后,我

WM_COPYDATA
从另一个应用程序(用Delphi编写)向窗口发送了一条消息:

Text := 'greetings!';CopyData.cbdata:= (Length(Text)+1)*StringElementSize(Text);CopyData.lpdata:= PWideChar(Text);SendMessage(hwnd, WM_COPYDATA, Handle, NativeInt(@CopyData));

输出为:

4615844615847465819026205924222greetings!

因此,它似乎微不足道,就像您编码时一样。

我唯一能想到的是Spotify中的文本

COPYDATASTRUCT
不是以空字符结尾的。您应该能够通过读取数据很容易地进行检查。利用该
cbData
成员。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626016.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号