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 ...
随机推荐
- MyBatis基础入门《六》Like模糊查询
MyBatis基础入门<六>Like模糊查询 描述: 未改动的文件,不再粘贴出来.项目中SQL的xml映射文件重要标签如下: mapper namespace cache 配置给定命令空间 ...
- vue--监听属性完成大小写字母间的转换
监听属性 watch侦听属性的作用是侦听某属性值的变化,从而做相应的操作,侦听属性是一个对象,它的键是要监听的对象或者变量,值一般是函数,当你侦听的元素发生变化时,需要执行的函数,这个函数有两个形参, ...
- MYSQLi数据访问分页查询
<?php //分页工具 直接加载使用 /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录 ...
- mac快捷键留存查看
基本的快捷键 Command是Mac里最重要的修饰键,在大多数情况下相当于Windows下的Ctrl.所以以下最基本操作很好理解: Command-Z 撤销 Command-X 剪切 Command- ...
- WinSock学习笔记
Socket(套接字)◆先看定义: typedef unsigned int u_int; typedef u_int SOCKET; ◆Socket相当于进行网络通信两端的插座,只要对方的Socke ...
- Day5 装饰器和文件操作
一.装饰器 1.什么是装饰器 装饰器即函数 装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 2. 装饰器需要遵循的原则 1.不修改被装饰函数的源代码(开放封 ...
- lua学习之循环打印九九乘法表
--第4题 输出99乘法表 function PrintMulitiplyTable() , do local res = {} local str = "" , i do res ...
- 【Hadoop学习之一】Hadoop介绍
一.概念 Hadoop是一个能够对大量数据进行分布式处理的软件框架,充分利用集群的威力进行高速运算和存储. 二.主要模块Hadoop Common:支持其他Hadoop模块的常用实用程序.Hadoop ...
- 【转】ETL介绍与ETL工具比较
本文转载自:http://blog.csdn.net/u013412535/article/details/43462537 ETL,是英文 Extract-Transform-Load 的缩写,用来 ...
- flask上下文全局变量,程序上下文、请求上下文、上下文钩子
Flask上下文 Flask中有两种上下文,程序上下文(application context)和请求上下文(request context) 当客户端发来请求时,请求上下文就登场了.请求上下文里包含 ...