转载:http://blog.csdn.net/hk627989388/article/details/53693636

转载:http://blog.csdn.net/heihei36/article/details/46636275

转载:http://bbs.csdn.net/topics/392043890

//GMEM_FIXED    分配固定的内存,返回值是一个指针.
//GMEM_MOVEABLE
//分配可移动的内存,在Win32中内存块在物理内存中是不可移动的,但在缺省堆中可以. 返回值是该内存对象的句柄,可使用函数 GlobalLock 将该句柄转换为一个指针.
//这个标识不能与 GMEM_FIXED 组合使用. //ansi
void SetClipboardByAnsi()
{
HWND hWnd = NULL;
HANDLE hHandle;//保存调用GlobalAlloc函数后分配的内存对象的句柄
string strTemp;
char *pBuf;//保存调用AllocLock函数后返回的内存地址 OpenClipboard( hWnd );//打开剪切板
EmptyClipboard();//清空剪切板 strTemp="巴萨VS皇马"; hHandle = GlobalAlloc(GMEM_MOVEABLE, strTemp.length()+);//分配内存 if (hHandle)//若函数调用失败,则返回NULL
{
pBuf = (char*) GlobalLock(hHandle);//锁定内存,返回申请内存的首地址
//wcscpy(pBuf, strTemp.c_str());
strcpy(pBuf, strTemp.c_str()); GlobalUnlock(hHandle);//解除锁定
SetClipboardData(CF_TEXT, hHandle);//设置剪切板数据
CloseClipboard();//关闭剪切板
}
} //Unicode
void SetClipboardByUnicode()
{
// 打开剪贴板
if (!OpenClipboard(NULL)|| !EmptyClipboard())
{
printf("打开或清空剪切板出错!\n");
return ;
} HANDLE hHandle;//保存调用GlobalAlloc函数后分配的内存对象的句柄
wstring strText = L"宽字符测试剪切板"; //hHandle = GlobalAlloc(GMEM_MOVEABLE, strText.length()+1);//错误的
hHandle = GlobalAlloc(GMEM_MOVEABLE, ((wcslen(strText.c_str()))*sizeof(TCHAR))*); if (hHandle)//若函数调用失败,则返回NULL
{
LPWSTR lpStr = (LPWSTR)GlobalLock(hHandle);
wcscpy(lpStr, strText.c_str());
GlobalUnlock(hHandle);//解除锁定
SetClipboardData(CF_UNICODETEXT, hHandle);//设置剪切板数据
CloseClipboard();//关闭剪切板
}
} void GetClipboard()
{
OpenClipboard(NULL);//打开剪切板 if (IsClipboardFormatAvailable(CF_UNICODETEXT))//剪切板上是否存在文本格式
{
HANDLE hClip;
wchar_t* pBuf; hClip = GetClipboardData(CF_UNICODETEXT);//获取剪切板文本数据 pBuf = (wchar_t*)GlobalLock(hClip);
GlobalUnlock(hClip);
CloseClipboard();
wstring temp = pBuf;
wprintf(L"%s",pBuf);
}
} int main()
{
//SetClipboardByAnsi();
//SetClipboardByUnicode();
GetClipboard(); getchar();
return ;
}

C++进程间通信之剪贴板的更多相关文章

  1. VC杂记

    获得Combobox的状态:向ComboBox发送CB_GETDROPPEDSTATE消息. 格式化字串:char buff[10] ; sprintf(buff,"1+1=%d" ...

  2. C++进程间通信

    # C++进程间通信 # 进程间通讯的四种方式:剪贴板.匿名管道.命名管道和邮槽 ## 剪切板 ## //设置剪切板内容 CString str; this->GetDlgItemText(ID ...

  3. 【Windows编程】系列第九篇:剪贴板使用

    上一篇我们学习了常见的通用对话框,本篇来了解剪贴板的使用,它常用于复制粘贴功能. 剪贴板是Windows最早就加入的功能,由于该功能非常实用,我们几乎每天都会使用到.通过剪贴板,我们就可以将数据从一个 ...

  4. CE 进程间通信

    WINCE下进程间通信常用的方式有:剪贴板(Clipboard),网络套接字(Socket),WM_COPYDATA消息,共享内存,管道(消息队列),注册表等 剪贴板 //////////////// ...

  5. [转]Windows进程间通信的各种方法

    http://www.cnblogs.com/songQQ/archive/2009/06/03/1495764.html 道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包) ...

  6. 孙鑫MFC学习笔记17:进程间通信

    17 1.进程间通信4种方式 2.OpenClipboard打开剪贴板 3.EmptyClipboard清空剪贴板,并把所有权分配给打开剪贴板的窗口 4.SetClipboardData设置剪贴板数据 ...

  7. Windows下进程间通信及数据共享

    进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系统的一个基本特征.Microsoft W ...

  8. 进程间通信机制<转>

    1   文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容. ...

  9. windows进程间通信 .

    摘 要: 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求.编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的.Microso ...

随机推荐

  1. mybatis之接口绑定

    接口绑定方案 mybatis中,提供了一套接口绑定方案,程序员可以提供一个接口,然后提供对应接口的一个mapper.xml文件.MyBatis会自动将接口和xml文件进行绑定.实际上就是mybatis ...

  2. border的特殊用法

    大家很容易在一些网页上看到二级菜单上有一个小的三角形,这个小三角型 除了可以使用图片或者使用iconfont写出来,还可以使用border写出来 这边简单的为大家举一个例子,希望对大家有用吧! css ...

  3. animator 新动画

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class Animator ...

  4. ssh整合not found class 异常总结

    (1)org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.microsoft.sqls ...

  5. Python全栈-day5-数据类型

    一.元组 1.元组基础 1)定义:不可变的‘列表’,定义方式(元素1,元素2.......) 2)用途:存多个值,但是只能读不能写 注意:元组的不可变指的是元组内元素id的不可变 t = (11,2, ...

  6. Python - 4. Control Structures

    From:http://interactivepython.org/courselib/static/pythonds/Introduction/ControlStructures.html Cont ...

  7. django migrate无效的解决方法

    遇到一个很奇怪的问题 python manage.py makemigrations 的时候显示要创建两张表,但是执行 python manage.py migrate 的时候不能识别,也就是说失效了 ...

  8. new sh file

    创建新文件 sbash='#!/bin/bash' sauth='# auth: xiluhua' sdate="# date: $(date +%Y-%m-%d)" shead= ...

  9. CentOS7 重启网卡Failed to start LSB: Bring up/down networking.解决方法

    环境:MAC PD虚拟机安装centos7 修改完网卡配置,重启网络服务报错 使用提示命令查看:systemctl status network.service 发现报错为Failed to star ...

  10. 使用Wisdom RESTClient如何在Linux和Mac上获取测试报告和API文档?

    使用Wisdom RESTClient自动化测试REST API,生成REST API文档, 需要先执行命令java -jar restclient-1.2.jar启动Wisdom RESTClien ...