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

如何将剪贴板文本分配给C++中的变量?,c++,winapi,variables,clipboard,assign,C++,Winapi,Variables,Clipboard,Assign,我写了一个程序,突出显示数字并复制它们。我希望能够对复制的文本进行一些基本的数学运算,例如乘法或加法,但我不知道如何将剪贴板数据分配给变量。基本上,我希望能够复制一个数字,将其分配给变量a,然后重复变量b,并将两者相乘。我已经想出了如何选择和复制号码,使该部分不是一个问题。任何帮助都将不胜感激,即使是一种与我尝试过的完全不同的方法 下面是我对这个问题的最新尝试: HANDLE clip0; OpenClipboard(NULL); EmptyClipboard();

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

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

    HANDLE clip0;
    OpenClipboard(NULL);
    EmptyClipboard();
        clip0 = GetClipboardData(CF_TEXT);
     variable = (char)clip0;
    CloseClipboard();
其中variable是变量

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

我的另一个尝试是:

HANDLE clip1;
    if (OpenClipboard(NULL)) 
        clip1 = GetClipboardData(CF_TEXT);
     variable = (char)clip1;
    CloseClipboard();
但是变量的值总是-8,您需要调用GlobalLockclip0来获取指向数据的指针,而不是强制转换句柄。然后,完成后,调用GlobalUnlock释放指针

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

剪贴板的文本内容是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();
}

当你说C++时,你可能是指Win32 API?这不是语言的一部分,而是一个OS服务。标记它,以便人们能够回答正确的操作系统。您可能希望使用sscanf或strtol将字符串转换为整数,而不是仅获取字符串的第一个字符。是的,我只是借用了问题中的单个字符的赋值。我为我犯的错误道歉,我对这一点有点陌生。我指的是Win32 API。Adam是对的,我确实需要将字符串转换为整数。我使用了sscanf和Anthony的建议,似乎效果很好。谢谢大家的帮助。你是说第4行的char*x=char*h吗?h也应为void*型,而不是手柄;句柄的类型定义为void*,这只是巧合,但您应该将其视为不透明类型。