window之 WM_COPYDATA

wchar_t winCaption[_MAX_PATH] = { 0 };
        caption.toWCharArray(winCaption);


        HWND receiveWindow = ::FindWindow(NULL, winCaption);
        if (receiveWindow == NULL)
            break;


        wchar_t data[_MAX_PATH] = { 0 };
        int length = filePath.toWCharArray(data);


        COPYDATASTRUCT copyData = { 0 };
        copyData.lpData = data;
        copyData.cbData = (length + 1) * sizeof(wchar_t);

        ::SendMessage(receiveWindow, WM_COPYDATA, (WPARAM)winId(), (LPARAM)&copyData);

注意在vista,win7不同进程中,需要过滤消息。

在Python中实现带有活动Windows消息循环的Windows句柄,可以使用pywin32库来调用Windows API。 以下是一个简单的示例代码,可以用于在Python中创建带有消息循环的窗口: ```python import win32gui import win32con import win32api import win32process def window_proc(hwnd, msg, wparam, lparam): if msg == win32con.WM_COPYDATA: # 处理WM_COPYDATA消息 return 0 else: # 其他消息处理 return win32gui.DefWindowProc(hwnd, msg, wparam, lparam) # 创建窗口类 wc = win32gui.WNDCLASS() wc.lpfnWndProc = window_proc wc.lpszClassName = "MyWindowClass" wc.hInstance = win32api.GetModuleHandle(None) win32gui.RegisterClass(wc) # 创建窗口 hwnd = win32gui.CreateWindowEx( 0, wc.lpszClassName, "", 0, 0, 0, 0, 0, win32con.HWND_MESSAGE, None, wc.hInstance, None) # 进入消息循环 while True: msg = win32gui.GetMessage(hwnd, 0, 0, 0) if msg[0] == 0: # 消息循环结束 break win32gui.TranslateMessage(msg) win32gui.DispatchMessage(msg) ``` 在上述代码中,我们首先定义了一个消息处理函数window_proc,用于处理接收到的WM_COPYDATA消息。然后,我们使用pywin32库调用Windows API来创建窗口类和窗口,并将消息处理函数与窗口关联。最后,我们使用GetMessage函数来获取消息,并使用TranslateMessage和DispatchMessage函数来处理消息。在消息处理函数window_proc中,我们可以处理接收到的WM_COPYDATA消息。 注意,由于Python是解释性语言,上述示例代码需要在Windows系统上运行,并且需要安装pywin32库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值