在 C 中将变量内容复制到剪贴板?

标签 c windows

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

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

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

最佳答案

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

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

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

  • 打开剪贴板
  • 清空剪贴板
  • 设置剪贴板数据
  • 关闭剪贴板
  • 获取剪贴板数据

下面是这些 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();

关于在 C 中将变量内容复制到剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25652602/

相关文章:

c# - pinvoke 在调用 C 代码时给出 AccessViolationException

c - strstr 在内核空间中无法正常工作

windows - 设置递归深度

c++ - 如何将 MATLAB 的 mex 设置定向到用于 C++ 编译的 Microsoft Windows SDK? (位置设置错误)

c++ - 连续位的长度 1 流后跟 0

c - 如何逐个字符读取文件,然后将它们存储到动态分配的数组中

c - 使用 struct in6_addr 的 printf ipv6 地址和使用 u_int32_t 的 ipv4 地址

c - 在 Visual Studio 中构建大量小工具有什么好方法?

windows - 在 Windows 上构建或安装 pgloader

c++ - 交叉编译——Windows 上的 V8 和 Linux