2

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

这是我对这个问题的最新尝试:

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

其中“变量”是变量。

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

我做的另一个尝试是:

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

但“变量”总是取值 -8

4

2 回答 2

8

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

OpenClipboard(NULL);
HANDLE clip0 = GetClipboardData(CF_TEXT);
char* p=(char*)GlobalLock(clip0);
variable=*p;
GlobalUnlock(clip0);
CloseClipboard();
于 2011-02-23T22:52:35.323 回答
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();
}
于 2011-02-23T23:02:39.313 回答