如何在c ++中将剪贴板文本分配给变量?

时间:2011-02-23 22:45:08

标签: c++ winapi variables clipboard assign

我写了一个突出数字并复制它们的程序。我希望能够使用复制的文本进行一些基本的数学运算,例如乘法或加法,但我无法弄清楚如何将剪贴板数据分配给变量。基本上,我希望能够复制一个数字,将其分配给变量“a”,然后用变量“b”重复并将两者相乘。我已经找到了如何选择和复制数字,以便该部分不是问题。任何帮助都会受到赞赏,即使是与我尝试过的完全不同的方法。

以下是我对此问题的最新尝试:

    HANDLE clip0;
    OpenClipboard(NULL);
    EmptyClipboard();
        clip0 = GetClipboardData(CF_TEXT);
     variable = (char)clip0;
    CloseClipboard();

其中“variable”是变量。

每当我运行程序并告诉它输出“variable”时,它返回值0。

我做的另一个尝试是:

HANDLE clip1;
    if (OpenClipboard(NULL)) 
        clip1 = GetClipboardData(CF_TEXT);
     variable = (char)clip1;
    CloseClipboard();

但“变量”总是采用-8

的值

2 个答案:

答案 0 :(得分:8)

您需要调用GlobalLock(clip0)来获取指向数据的指针,而不是转换句柄。然后,当你完成后,调用GlobalUnlock释放指针。

OpenClipboard(NULL);
HANDLE clip0 = GetClipboardData(CF_TEXT);
char* p=(char*)GlobalLock(clip0);
variable=*p;
GlobalUnlock(clip0);
CloseClipboard();

答案 1 :(得分:1)

剪贴板的文本内容是c。

指向的c字符串
if(OpenClipboard(NULL) != FALSE)
{
  HANDLE clip0 = GetClipboardData(CF_TEXT); 
  if(clip0 != NULL)
  {
    char *c = reinterpret_cast<char*>(GlobalLock(clip0));
    // Use c before it goes out of scope
    ...
    GlobalUnlock(clip0);
  }
  CloseClipboard();
}