C++进程间通信之剪贴板
转载: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++进程间通信之剪贴板的更多相关文章
- VC杂记
获得Combobox的状态:向ComboBox发送CB_GETDROPPEDSTATE消息. 格式化字串:char buff[10] ; sprintf(buff,"1+1=%d" ...
- C++进程间通信
# C++进程间通信 # 进程间通讯的四种方式:剪贴板.匿名管道.命名管道和邮槽 ## 剪切板 ## //设置剪切板内容 CString str; this->GetDlgItemText(ID ...
- 【Windows编程】系列第九篇:剪贴板使用
上一篇我们学习了常见的通用对话框,本篇来了解剪贴板的使用,它常用于复制粘贴功能. 剪贴板是Windows最早就加入的功能,由于该功能非常实用,我们几乎每天都会使用到.通过剪贴板,我们就可以将数据从一个 ...
- CE 进程间通信
WINCE下进程间通信常用的方式有:剪贴板(Clipboard),网络套接字(Socket),WM_COPYDATA消息,共享内存,管道(消息队列),注册表等 剪贴板 //////////////// ...
- [转]Windows进程间通信的各种方法
http://www.cnblogs.com/songQQ/archive/2009/06/03/1495764.html 道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包) ...
- 孙鑫MFC学习笔记17:进程间通信
17 1.进程间通信4种方式 2.OpenClipboard打开剪贴板 3.EmptyClipboard清空剪贴板,并把所有权分配给打开剪贴板的窗口 4.SetClipboardData设置剪贴板数据 ...
- Windows下进程间通信及数据共享
进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系统的一个基本特征.Microsoft W ...
- 进程间通信机制<转>
1 文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容. ...
- windows进程间通信 .
摘 要: 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求.编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的.Microso ...
随机推荐
- js重定向跳转页面
重定向方式: 1> window.location ='www.baidu.com'; window.location='/'; window.location='/logout/'; ...
- AIX挂载NFS写入效率低效解决
背景: Linux是NFS的Server端,AIX是NFS的Client端(此外,有一个Linux也作为Client端对比测试). 1.NFS对应的底层设备是闪存卡,本地测试I/O写性能可达2GB/s ...
- 43.HTML--a标签之mailto邮箱属性用法
HTML 属性标记之 mailto 的用法详解 大家知道,mailto是网页设计制作中的一个非常实用的html标签,许多拥有个人网页的朋友都喜欢在网站的醒目位置处写上自己的电子邮件地址,这样网页浏 ...
- C++实现 safaBase64编码跟nonSafeBase64编码的转换
默认Base64编码的字符串,用于网络传输是不安全的,因为Base64编码使用的标准字典含有“+”,“/”. 规则如下: //nonSafeBase64 到 safeBase64'+' ------ ...
- python3学习笔记之安装
一.Python安装 1.下载地址: https://www.python.org/downloads/release/python-365/ 2. Linux系统自带Python2.7,如需安装3 ...
- Css预处理器---Less(三)
四.Color函数 1.less提供的颜色运算函数,颜色会被转换成HSL色彩空间,然后再通道级别进行操作,函数如下: lighten(@color, 10%); //return a color wh ...
- Unity shader学习之屏幕后期处理效果之边缘检测
边缘检测的原理是利用一些边缘检测算子对图像进行卷积操作. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7232707.html 例如: 代码如下: usin ...
- c#如何解析时区字符串
常见时区缩写可参考: http://time.123cha.com/knowledge/6.html 常见时区缩写如下: IDLE +12:00 国际日期变更线,东边 NZDT +13:00 新西兰 ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门
各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览.接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来. 本 ...
- Quick-Cocos2d-x 新建项目
开发工具准备就绪以后,下面我们就可以开始创建我们的项目了. 首先启动 Quick 下的 player3,在这儿的示例标签下你可以看到很多Quick自带的示例,对于初学者来说,看看这些示例的使用方法会对 ...