从剪贴板读取C / C ++失败但java成功

时间:2015-07-13 00:46:19

标签: c++ windows-8.1

我有一个奇怪的问题,试图从剪贴板中读取我在Windows 8.1 64位上使用Visual Studio编写的C或C ++程序(我已尝试过2010年,2012年和2013年)。以下代码在Window 7 64位上正常工作,但在Windows 8.1上启动Web浏览器(任何一个)后无法从键盘读取:

char * ReadClipboard()
{
    char * Result = 0;
    if (OpenClipboard(NULL))
    {
        HANDLE ClipboardHandle = GetClipboardData(CF_TEXT);
        if (ClipboardHandle)
        {
            char * Text = (char *)GlobalLock(ClipboardHandle);
            if (Text)
            {
                size_t StringLength = strlen(Text);
                Result = (char *)malloc(StringLength + 1);
                strcpy(Result, Text);
            }
            GlobalUnlock(ClipboardHandle);
        }
        CloseClipboard();
    }
    return Result;
}

即使剪贴板上有数据,对GetClipboardData的调用也会返回null。当在相同条件下执行以下java代码时,它会正确读取剪贴板:

String textData = (String) Toolkit.getDefaultToolkit().
                                   getSystemClipboard()
                                  .getData(DataFlavor.stringFlavor);

我也尝试使用具有相同结果的Ole剪贴板从C / C ++读取剪贴板 - 失败。在上面的代码中我有什么问题吗?其他人可以重现这个问题吗?

0 个答案:

没有答案