如何将字符数组复制到剪贴板?

L33*_*EAN 0 c++ clipboard winapi

我试图让我的应用程序将字符数组复制到剪贴板,以便它可以粘贴到IE地址栏中.我遇到了解决这个问题的问题.这是我正在使用的代码:

HGLOBAL glob = GlobalAlloc(GMEM_FIXED,32);
memcpy(glob,array,sizeof(array));
OpenClipboard(hDlg);
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT,glob);
CloseClipboard();
Run Code Online (Sandbox Code Playgroud)

数组声明为:

char array[500];
Run Code Online (Sandbox Code Playgroud)

这将导致程序崩溃.但是如果我sizeof(array)用一个号码切换出来就可以,但只有8个字符被复制到剪贴板.

谁能告诉我如何解决这个问题?我直接针对Win32 API,而不是使用MFC.

Joh*_*ing 5

您只分配32个字节的全局内存:

GlobalAlloc(GMEM_FIXED,32);
Run Code Online (Sandbox Code Playgroud)

...然后尝试将500字节填入32字节包:

memcpy(glob,array,sizeof(array));
Run Code Online (Sandbox Code Playgroud)

将GlobalAlloc更改为:

GlobalAlloc(GMEM_FIXED,sizeof(array));
Run Code Online (Sandbox Code Playgroud)

此外,您将数据粘贴为Unicode text(CF_UNICODETEXT),但它不是Unicode文本.我想这会导致......问题.

将其粘贴为纯文本:

SetClipboardData(CF_TEXT,glob);
Run Code Online (Sandbox Code Playgroud)