• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 为什么我用VC生成的ATLCOM服务程序,在程序里面运行到whileGetMessage后不执行呢?

为什么我用VC生成的ATLCOM服务程序,在程序里面运行到whileGetMessage后不执行呢?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 为什么我用VC生成的ATLCOM服务程序,在程序里面运行到whileGetMessage后不执行呢?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 为什么我用VC生成的ATL COM服务程序,在程序里面运行到while GetMessage后不执行呢?
描述:

我想在服务里面处理一个系统消息应该怎么做,新生成的服务程序在下面代码:
    MSG msg;
    while (GetMessage(&msg, 0, 0, 0))
        DispatchMessage(&msg);
时就挂在while里面不执行了,我尝试了一下是GateMessage好像挂起了一样


解决方案1:

CrowReturns() 消息循环不用窗口也可以
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
单看这句确实没问题,但楼主是用::PostMessage(HWND_BROADCAST, msgExit, NULL, NULL);这句发全局消息给服务程序的,对于HWND_BROADCAST的情况,我上面已经列出SDK的说明,显然没有窗口是不行的。
当然,如果不加窗口,不能用HWND_BROADCAST这种方式发消息给服务程序,但可以用PostThreadMessage(有的放矢是可以的),那个线程ID可以有好多方法传给客户端,这里我建议使用file_mapping。

解决方案2:

把GetMessage改成PeekMessage,GetMessage是同步的会被block住,一直到有消息返回。消息循环不用窗口也可以,因为GetMessage/PeekMessage是GUI API,一旦调用系统会为你创建消息队列的

解决方案3:

HWND_BROADCAST : The message is posted to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows.

解决方案4:

第二个参数传INVALID_HANDLE_VALUE,才能取到线程消息


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 为什么我用VC生成的ATLCOM服务程序,在程序里面运行到whileGetMessage后不执行呢?

相关文章

  • 2017-06-04 插入网页中的activex控件上弹出气泡
  • 2017-06-04 我想做一网页,别人一到我的网页后就会修改他的注册表,请问是不是用ActiveX来实现?决不是用来做坏事的!
  • 2017-06-04 一个关于内存泄漏的问题
  • 2017-06-04 求一个最简单的后台服务程序例子(service)
  • 2017-06-05 如win2000启动后才插入PS2鼠标,我能不能用命令或程序让它激活?
  • 2017-06-05 ISAPI过滤器中如何读取HTTPRequest的内容?主要是读取request-body的内容,因为我想读取表单数据。
  • 2017-06-05 用InstallShield如何注册matlab的com组件?
  • 2017-06-05 关于HookApi的
  • 2017-06-04 如何用vbscript调用我的这个COM?
  • 2017-06-05 问几个基础问题:

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 想用VC做一个记事本程序,能否利用sedexe这个强大的文本处理程序
    • 怎么得到已经运行的自动化服务器对象!
    • 编译联接特别慢
    • 救命啦,简单问题,多线程。
    • 怎样定义接口,使com组件能够返回一个二进制的流(比如图片数据)
    • 关于ActiveX控件的?
    • 200分(另加100)我需要找到QQ发送消息窗口的句柄,感激……
    • 程序结束退出时可以不用WSACleanup吗?
    • 程序中,怎样把本程序关了,然后重新运行?
    • 天呐,这么简单的问题也能拿50分?!!!在线等待

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有