【问题标题】:Copy variable content to clipboard in C?将变量内容复制到C中的剪贴板?
【发布时间】:2014-09-03 19:53:00
【问题描述】:

快速提问:在此示例代码中:

printf ("\nType in 1st address: ");
scanf ("%x", &address1);
address1 = (address1 - number1) * 2;
printf ("\nResult = %08X\n\n", address1);

如何将 var address1 的内容复制到剪贴板?

【问题讨论】:

  • 这取决于您运行的平台。
  • 什么剪贴板? (C 编程语言没有剪贴板。)
  • address1指向什么样的数据?你想在剪贴板上放什么样的数据?
  • 我用的是windows 7,address1应该是4字节的十六进制数。
  • 如果您将解决方案作为答案发布,它可能对未来的读者有所帮助。

标签: c windows


【解决方案1】:

对于未来的读者,我决定展示一个如何在 Windows 中执行此操作的示例。

首先使用 sprintf 格式化数据(http://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm),如果它的格式不正确(const char*)。

然后使用下面的 Windows API 来设置剪贴板数据。

  • OpenClipBoard
  • 空剪贴板
  • 设置剪贴板数据
  • 关闭剪贴板
  • 获取剪贴板数据

这里是一个非常基本的示例使用这些 API,没有任何返回/错误值检查。

const char *Str = "Hello world";
const size_t strLen = lstrlenA(Str) + 1;
HGLOBAL hGlobal =  GlobalAlloc(GMEM_MOVEABLE, strLen); //Memory must be moveable!
memcpy(GlobalLock(hGlobal), Str, strLen);
GlobalUnlock(hGlobal);
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_TEXT, hGlobal);
CloseClipboard();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多