VC++之线程和进程之用剪贴板实现进程间通信

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、创建对话框应用程序工程

二、编辑对话框资源

控件ID及标题

IDD_THREAD_DIALOG 用剪贴板实现进程间通信

IDC_STATIC 进程1发送数据:IDC_EDIT_SEND

IDC_STATIC 进程2接收数据:IDC_EDIT_REC

IDC_SEND 发送

IDC_REC 接收

三、添加消息响应函数

四、于“ThreadDlg.cpp”文件内添加消息响应函数代码

void CThreadDlg::OnRec()

{

// TODO: Add your control notification handler code here if(OpenClipboard())

{

if(IsClipboardFormatAvailable(CF_TEXT))

{

HANDLE clipboard;

char* buf;

clipboard=GetClipboardData(CF_TEXT);

buf=(char*)GlobalLock(clipboard);

GlobalUnlock(clipboard);

SetDlgItemText(IDC_EDIT_REC,buf);

CloseClipboard();

}

}

}

void CThreadDlg::OnSend()

{

// TODO: Add your control notification handler code here if(OpenClipboard()) //打开剪贴板 {

CString str;

HANDLE clipboard;

char * buf;

EmptyClipboard(); //清空剪贴板

GetDlgItemText(IDC_EDIT_SEND,str);

clipboard=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);

buf=(char*)GlobalLock(clipboard); //空字符作文本数据结尾,多分配一个字节

strcpy(buf,str);

GlobalUnlock(clipboard);

SetClipboardData(CF_TEXT,clipboard);

CloseClipboard();

}

}

五、编译

六、运行

七、函数说明

1、SetClipboardData()函数声明

HANDLE SetClipboardData(

UINT nFormat, //剪贴板格式

HANDLE hMen //特定格式之数据句柄

)

功能:以特定剪贴板格式复制数据到剪贴板。函数调用成功,返回数据句柄;失败,返回NULL,可用GetLastError()函数获取详细错误信息。

2、GetClipboardData()函数声明

HANDLE GetClipboardData(

UINT uFormat //剪贴板模式

)

功能:以特定模式获取剪贴板信息。函数调用成功,返回非零值;失败,返回零。

3、GlobalLock()函数声明

LPVOID GlobalLock(

HGLOBAL hMen //指向全局内存对象之句柄。

)

功能:锁定一全局内存对象。函数调用成功,返回内存对象第一个字节的指针;失败,返回NULL,可用GetLastError()函数获取详细错误信息。

4、GlobalUnlock()函数声明

LPVOID GlobalUnlock(

HGLOBAL hMen //指向全局内存对象之句柄。 )

功能:解除一全局内存对象之锁定。函数调用成功,返回非零值;失败,返回NULL,可用GetLastError()函数获取详细错误信息。

5、GlobalAlloc()函数声明

HGLOBAL GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1)(

UINT fFlags, //内存分配相关参数。

SIZE_T dwBytes //内存分配之大小

)

功能:分配一定数量之堆内存。函数调用成功,返回指向新分配内存对象只句柄;失败,返回NULL,可用GetLastError()函数获取详细错误信息。

6、CloseClipboard()函数声明

BOOL CloseClipboard(void)

功能:关闭剪贴板。函数调用成功,返回非零值;失败,返回零。

7、EmptyClipboard()函数声明

BOOL EmptyClipboard(void)

功能:清空剪贴板,同时释放剪贴板中的数据句柄。函数调用成功,返回非零值;失败,返回零。

相关文档
最新文档