windows消息队列C语言,08年计算机二级C语言辅导:vc操作微软消息队列的方法
定义
IMSMQQueuePtr qDest; // Represents Destination Queue
IMSMQQueueInfoPtr qInfo; //Represents an open instance of the destination queue
IMSMQQueueInfoPtr qRead;
IMSMQMessagePtr qMsg; //Represents the message
初始化
qDest = NULL;
CoInitialize(NULL);
try{
qInfo.CreateInstance("MSMQ.MSMQQueueInfo");
qRead.CreateInstance("MSMQ.MSMQQueueInfo");
qMsg.CreateInstance("MSMQ.MSMQMessage");
lpszSystemInfo = tchBuffer;
GetComputerName(lpszSystemInfo,&cchBuff); // Getting the ComputerName
m_ServerName=lpszSystemInfo;
UpdateData(FALSE);
}
catch (_com_error)
{
MessageBox("Failed in CreateInstance of MSMQQueueInfo","MSMQ QueueInfo",1);
PostQuitMessage(1);
ReleaseAll();
}
创建消息队列
try
{
// m_ServerName = .\Private$\aaa 创建专有队列
// m_ServerName = .\aaa 公用队列
//
// qInfo->PathName = m_ServerName.AllocSysString(); // Setting the Queue Path
CString fname;
fname="DIRECT=OS:";
fname+=m_ServerName;
qInfo->PathName = m_ServerName.AllocSysString();
qInfo->FormatName = fname.AllocSysString();
qInfo->Label= m_msgLabel.AllocSysString(); // Setting the Queue Label
ht = qInfo->Create();
qInfo->Journal=1; // Enabling the Journal Option
qInfo->Update();
qInfo->Refresh();
}
catch (_com_error e)
{
CString str;
str.Format("%s",e.ErrorMessage());
MessageBox("Creating a Queue Failed","Create Queue",1);
//ReleaseAll();
}
给消息队列发送数据
try
{
// Create a direct format name of the queue, and
// set the FormatName property of the MSMQQueueInfo object.
// qInfo->FormatName L"DIRECT=TCP:10.9.255.71\\Private$\\test" 私有
// qInfo->FormatName L"DIRECT=TCP:10.9.255.71\\test" 公共
fname="DIRECT=OS:";
fname+=m_ServerName;
qInfo->PathName=m_ServerName.AllocSysString();
qInfo->FormatName = fname.AllocSysString();
// Open the queue.
qDest = qInfo->Open(MQ_SEND_ACCESS, MQ_DENY_NONE);
qMsg->Label = m_msgLabel.AllocSysString();
VariantInit(&vMessage);
vMessage.vt=VT_BSTR;
vMessage.bstrVal=m_msgData.AllocSysString();
qMsg->put_Body(vMessage);
VariantClear(&vMessage);
qMsg->Send(qDest);
qDest->Close();
}
catch(_com_error)
{
MessageBox("Sending the Queue failed","Send Queue",1);
//ReleaseAll();
}
读取消息队列内容 try
{
qRead->PathName=m_ServerName.AllocSysString();
fname="DIRECT=OS:";
fname+=m_ServerName;
if(status==1) fname=fname+";Journal"; // If Journal Option is Checked
qInfo->PathName=m_ServerName.AllocSysString();
qRead->FormatName = fname.AllocSysString();
qDest = qRead->Open(MQ_RECEIVE_ACCESS,MQ_DENY_NONE);
qMsg = qDest->Receive(&vtMissing,&vtMissing,&vtMissing,&vtReceiveTimeout);
if (qMsg == NULL)
{
return;
}
label=qMsg->GetLabel();
body=qMsg->GetBody().bstrVal;
m_msgLabel=(LPSTR)label;
m_msgData=(LPSTR)body;
UpdateData(FALSE);
qDest->Close();
}
catch(_com_error)
{
MessageBox("Reading the Queue Failed","Read Queue",1);
//ReleaseAll();
}
windows消息队列C语言,08年计算机二级C语言辅导:vc操作微软消息队列的方法相关推荐
- 计算机二级换c语言,09年计算机二级C语言辅导:C技巧(内存分配:更换策略,不要为难内存)...
09年计算机二级C语言辅导:C技巧(内存分配:更换策略,不要为难内存) 分类:计算机等级| 更新时间:2008-11-21| 来源:教育联展网 在32位机上(64位也是一样的,但是空间大很多),一个进 ...
- 川轻化c语言实验答案,计算机二级c语言第4套笔试模拟试卷.doc
计算机二级c语言第4套笔试模拟试卷.doc 第4套 笔试模拟试卷一选择题(1)下列选项中,不是一个算法的基本特征的是( ).A)完整性B)可行性C)有穷性D)拥有足够的情报(2)以下描述中,不是线性表 ...
- 湖北计算机二级考试c语言报名,湖北省计算机二级C语言考试.doc
湖北省计算机二级C语言考试.doc 1.计算机在实现工业自动化中的应用主要是进行(A) A.实时控制 B.数据处理 C.数值计算 D.人工智能2.计算机的主频指的是(D)A.硬盘读写速度,用Hz表示 ...
- 试题以文件的形式存在C语言,2016年计算机二级C语言上机题库
2016年计算机二级C语言上机题库 一.选择题 1.下列叙述中正确的是( ). A.数据的逻辑结构与存储结构必定是一一对应的 B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结 ...
- 以往计算机二级c语言填空题,计算机二级C语言考试填空题精选4
1. 电子数字计算机最主要的工作特点是 A) 高速度 B) 高精度 C) 存储程序与自动控制 D) 记忆力强 2. 在微机的性能指标中,用户可用的内存储器容量能常是指 A) ROM的容量 B) RAM ...
- 2017c语言预测,2017计算机二级C语言上机最终预测题
2017计算机二级C语言上机最终预测题 2017年上半年计算机二级考试即将到来,为了帮助大家备考,百分网小编整理了计算机二级C语言上机最终预测题,希望帮助大家顺利通过计算机二级考试. 填空题 请补充f ...
- 计算机二级c语言考点分析,计算机二级C语言考点分析.doc
计算机二级C语言考点分析 目录 TOC \o "1-3" \h \z \u 计算机二级C语言考点分析 1 导读 2 一.考点分析1??C语言概述 2 二.考点分析2??运算符与表达 ...
- 计算机C语言常用语句,计算机二级C语言考试常见知识积累
形式化方法是一种特别的基于数学的技术,用于软件和硬件系统的形式规范.开发以及形式验证.下面是小编整理的关于计算机二级C语言考试常见知识,欢迎大家参考! 选择结构 [考点1]关系运算 关系运算符有6个, ...
- 计算机二级c语言选择题范围,计算机二级C语言考点选择结构
C语言的运算符包含的范围很广泛,共有34种运算符.C语言把括号.赋值.强制类型转换等都作为运算符处理.以下是关于计算机二级C语言考点选择结构,希望大家认真阅读! [考点1]关系运算 关系运算符有6个, ...
最新文章
- Swoft 源码剖析 - Swoft 中的注解机制
- fastcopy会损坏硬盘_硬盘坏了数据可以修复吗?恢复技巧都在这!
- 用js实现表格行的动态添加与删除
- [转]C#连接操作mysql实例
- foreach语句的的解析
- STM32F407+CubeMX+Keil上移植RTX5实时系统
- 【今日CV 计算机视觉论文速览】Mon, 28 Jan 2019
- 什么是COM组件(ZT)
- 文件(文本、二进制)读写,利用popen读取linux命令读取结果
- c语言中的单词的意思及作用,c语言入门必背单词 具体含义是什么
- 量子机器学习(QML)(一):量子计算基础
- 01-初探MQ-MQ的三大使用场景:应用解耦、异步提速、削峰填谷
- mysql数据库的封装
- UDP/TCP实时传输图像
- 采众家之长 凯翔软件定义存储能够后来居上吗?
- 华为研究院19级研究员几年心得终成趣谈网络协议文档
- Exiv2 With XMP for Android
- 【python】Algorithm
- STM32F103CB控制超声波HCSR04可用程序
- 【java校招你不知道的那些事儿】java校招不仅仅是春招秋招,具体有哪些阶段,特点是什么
热门文章
- css hack(ie6-9,firefox,chrome,opera,safari)
- 根据wsdl生成对应的Java代码进行接口测试(一)
- android studio lbs项目,android studio use 百度LBS have JNICommonMemCache
- 教育教学知识与能力小学计算机,浅谈小学计算机教学论文
- php-cgi 68%,php cgi 进程占用太多怎么办
- Pytorch(八) --Pytorch实现多分类问题
- spring项目搭建云服务器,Spring Boot项目打包并部署到云服务器
- 58端口使用技巧跟推送_Kindle使用技巧:定时推送
- 游戏开发需要具备哪些技术_短视频 SDK 开发 (一) 开发一款短视频 SDK 需要具备哪些知识?...
- VS_QT中配置qDebug输出