我写了一个突出数字并复制它们的程序。我希望能够使用复制的文本进行一些基本的数学运算,例如乘法或加法,但我无法弄清楚如何将剪贴板数据分配给变量。基本上,我希望能够复制一个数字,将其分配给变量“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
的值答案 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();
}