搜索
查看: 859|回复: 4
打印 上一主题 下一主题

c语言剪切板操作代码,在啊哈不能编译哪里需要修改?

[复制链接]
跳转到指定楼层
楼主
发表于 2015-7-25 09:29:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8啊哈币
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>

int main(int argc, char * argv[])
{
HGLOBAL hMemory;
LPTSTR lpMemory;
char * content = "蓝雨麦郎版权所有";   // 待写入数据
int contentSize = strlen(content) + 1;

if(!OpenClipboard(NULL))    // 打开剪切板,打开后,其他进程无法访问
{
  puts("剪切板打开失败");
  return 1;
}

if(!EmptyClipboard())       // 清空剪切板,写入之前,必须先清空剪切板
{
  puts("清空剪切板失败");
  CloseClipboard();
  return 1;
}

if((hMemory = GlobalAlloc(GMEM_MOVEABLE, contentSize)) == NULL)    // 对剪切板分配内存
{
  puts("内存赋值错误!!!");
  CloseClipboard();
  return 1;
}

if((lpMemory = (LPTSTR)GlobalLock(hMemory)) == NULL)             // 将内存区域锁定
{
  puts("锁定内存错误!!!");
  CloseClipboard();
  return 1;
}

memcpy_s(lpMemory, contentSize, content, contentSize);   // 将数据复制进入内存区域

GlobalUnlock(hMemory);                   // 解除内存锁定

if(SetClipboardData(CF_TEXT, hMemory) == NULL)
{
  puts("设置剪切板数据失败!!!");
  CloseClipboard();
  return 1;
}

system("pause");
return 0;
}


最佳答案

查看完整内容

啊哈C用的这个GCC还不支持memcpy_s,可以用memcpy代替,注意这两个函数的参数列表也是不同的。给出修改后的代码: [mw_shl_code=c,true]#include #include #include #include int main(int argc, char * argv[]) { HGLOBAL hMemory; LPTSTR lpMemory; char * content = "蓝雨麦郎版权所有"; // 待写入数据 int contentSize = strlen(content) + 1; if(!OpenClipboard(NULL)) // 打开剪切板,打开后,其他 ...
沙发
发表于 2015-7-25 09:29:34 | 只看该作者
本帖最后由 981013 于 2015-7-25 14:43 编辑

啊哈C用的这个GCC还不支持memcpy_s,可以用memcpy代替,注意这两个函数的参数列表也是不同的。给出修改后的代码:
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>

int main(int argc, char * argv[])
{
HGLOBAL hMemory;
LPTSTR lpMemory;
char * content = "蓝雨麦郎版权所有";   // 待写入数据
int contentSize = strlen(content) + 1;

if(!OpenClipboard(NULL))    // 打开剪切板,打开后,其他进程无法访问
{
  puts("剪切板打开失败");
  return 1;
}

if(!EmptyClipboard())       // 清空剪切板,写入之前,必须先清空剪切板
{
  puts("清空剪切板失败");
  CloseClipboard();
  return 1;
}

if((hMemory = GlobalAlloc(GMEM_MOVEABLE, contentSize)) == NULL)    // 对剪切板分配内存
{
  puts("内存赋值错误!!!");
  CloseClipboard();
  return 1;
}

if((lpMemory = (LPTSTR)GlobalLock(hMemory)) == NULL)             // 将内存区域锁定
{
  puts("锁定内存错误!!!");
  CloseClipboard();
  return 1;
}

memcpy(lpMemory, content, contentSize);   // 将数据复制进入内存区域

GlobalUnlock(hMemory);                   // 解除内存锁定

if(SetClipboardData(CF_TEXT, hMemory) == NULL)
{
  puts("设置剪切板数据失败!!!");
  CloseClipboard();
  return 1;
}

system("pause");
return 0;
}[/mw_shl_code]


板凳
 楼主| 发表于 2015-7-25 15:41:08 | 只看该作者
谢了,可以免费给我一个把变量写入到剪贴板和把剪贴板文字写入到变量的代码吗
地板
发表于 2015-7-25 19:34:50 | 只看该作者
ttszuo 发表于 2015-7-25 15:41
谢了,可以免费给我一个把变量写入到剪贴板和把剪贴板文字写入到变量的代码吗

WinAPI没有仔细研究过,所以很抱歉不行
5#
发表于 2015-7-25 19:35:10 | 只看该作者
ttszuo 发表于 2015-7-25 15:41
谢了,可以免费给我一个把变量写入到剪贴板和把剪贴板文字写入到变量的代码吗

WinAPI没有仔细研究过,所以很抱歉不行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表