gpt4 book ai didi

c - 如何在 C 中从 COPYDATASTRUCT 复制消息?

转载 作者:行者123 更新时间:2023-11-30 18:42:30 26 4
gpt4 key购买 nike

我的 C# 编码将消息发送到 WM_COPYDATA

public static bool SendArgs(IntPtr targetHWnd, string args)
{
Win32.CopyDataStruct cds = new Win32.CopyDataStruct();
try
{
cds.cbData = (args.Length + 1) * 2;
cds.lpData = Win32.LocalAlloc(0x40, cds.cbData);
Marshal.Copy(args.ToCharArray(), 0, cds.lpData, args.Length);
cds.dwData = (IntPtr)1;
Win32.SendMessage(targetHWnd, Win32.WM_COPYDATA, IntPtr.Zero, ref cds);
}
finally
{
cds.Dispose();
}

return true;
}

我接收消息的c代码是

static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_COPYDATA:
{

COPYDATASTRUCT* copy_data = (COPYDATASTRUCT*)(lParam);

const char* str = (const char* )(copy_data->lpData);
/* Also fixed the parameter list for "%.*s" */
printf("Message (%u): %.*s\n", copy_data->dwData, (int)copy_data->cbData, str);
}
}
}

使用上面的代码我检索消息的第一个字符,而不是所有内容

最佳答案

你的意思是这样的吗?

if (message == WM_COPYDATA)
{
COPYDATASTRUCT* copy_data = (COPYDATASTRUCT)(lparam);

const char* str = (const char*)(copy_data->lpData);

/* Also fixed the parameter list for "%.*s" */
printf("Message (%u): %.*s\n", copy_data->dwData, (int)copy_data->cbData, str);
}

当然,只有当 copy_data->lpData 确实是字符串数据时,才将其打印为字符串才有意义。

关于c - 如何在 C 中从 COPYDATASTRUCT 复制消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com