Windows GUI代码与Windows消息问题调试利器

记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用。同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别,
高手往往靠工具的使用在关键的时候打开局面,在适当的时候使用适当的工具就往往可以事半功倍。

首先让我们来讨论如下两个简单的问题。

1. 如果你写的一个软件出了一个问题,这个问题只有在关闭程序的时候出现,你怎么调试呢?
2. 如果你写的一个软件出了一个问题,这个问题只有在关闭机器的时候出现,你怎么调试呢?
3. 如果你写的一个软件出了一个问题,你怀疑可能是这个程序消息处理有问题,你怎么调试呢?
3. 如果你写的一个软件出了一个问题,你怀疑可能是这个程序的资源文件属性可能有问题,你怎么调试呢?

你不会真的想一次一次的去重启电脑来重现问题吧?呵呵..

对于这些问题我首先想介绍的是SPY++, 这个伴随Visual Studio多个版本的工具其实很多人并没有很好的利用,更有甚者竟然还造轮子,
不是说不可以造轮子,如果你因为不知道有这个东西去造轮子,我就要鄙视你了,呵呵,不要瞧不起Visual Studio自带的工具,他们往往可以干很多NB的事,只是你可能

还不太会用。

不多说了,下面上图,打开spy++ 将查找窗口的小圆圈拖拽到你感兴趣的小圆圈上面去,选择属性,你可以看到所有有关这个窗口的属性,选择消息,你就可以捕获到这个

窗口接收到的所有的消息,对于消息相关的问题,消息的追踪,资源属性问题的调试,说SPY++是神器,一点都不为过。

虽然SPY++对于消息的捕获称的上是神器,但是他有一个功能的缺失,他只能捕获消息,不能给窗口发消息,这对于很多问题的模拟和分析就很是不方便

于是有了下面一个我要介绍的工具: SendMessage, 是个open source的小工具,你可以从下面的链接下载:

http://sourceforge.net/projects/stefanstools/files/SendMessage/

SendMessage这个小工具的使用方法和SPY++特别像,所以说他们配合在一起使用也就是水到渠成的事,通过这个工具选择某个窗口,

你可以对这个窗口send message, post message, 直接选择不同时期的消息进行发送,包括关机前才会有系统发出的消息模拟。

小节

通过对这两个小工具的介绍,我相信开篇的几个问题读者已经有了答案,但是我还是想说的是,作为软件工程师,遇到问题千万不要蛮干,

对的时候使用对的工具太重要了,否则就算你加再多的班也是徒劳,希望对大家有所帮助,兄弟们加油!

Windows GUI代码与Windows消息问题调试利器的更多相关文章

  1. 体验Code::Blocks下的Windows GUI编程(32 bit and 64 bit)

    0. 前言 不知道为什么,几乎所有的C++编程教程都是从命令行版(控制台应用程序)的Hello World开始的.然而,对于现在的年轻人来说,从小就用鼠标点击窗口或图标操作电脑,对于那个神秘黑色的窗口 ...

  2. 用Nim语言开发windows GUI图形界面程序

    前言 本文得到了“樂師”的大力支持, 我们一起调试程序到深夜,要是没有他的帮忙, 我不知道要多久才能迈过这道坎, 另外“归心”还有其他人也提供了帮助, 他们都来自于QQ群:“Nim开发集中营”4693 ...

  3. 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了

    系统关闭窗体的事件顺序为: OnCloseQuery ----> OnClose ----> OnDestroy 下面的代码说明问题: unit Unit3; interface uses ...

  4. 【转】深入Windows内核——C++中的消息机制

    上节讲了消息的相关概念,本文将进一步聊聊C++中的消息机制. 从简单例子探析核心原理 在讲之前,我们先看一个简单例子:创建一个窗口和两个按钮,用来控制窗口的背景颜色.其效果 图1.效果图  Win32 ...

  5. 如何实现Windows Phone代码与Unity相互通信(事件方式)

    源地址:http://www.cnblogs.com/petto/p/3909063.html 一些废话 昨天写一篇今天写一篇.不是我闲的蛋疼,是今天一天碰到了好几个恼人的问题,浪费一天时间搞定.本文 ...

  6. Python GUI编程(Tkinter) windows界面开发

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...

  7. windows gui测试工具:AutoIt

    windows gui测试工具:AutoIt 2017-01-09 目录 1 简介2 示例1 记事本自动化操作3 示例2 上传文件 1 简介 返回 AutoIt v3 是用以编写并生成具有 BASIC ...

  8. WPF会重写Windows GUI的历史吗?

    原文地址:http://tech.it168.com/zx/2007-09-15/200709141320653.shtml 你可能对微软的.NET框架3.0版本的最近的一次更新感到有点奇怪.主版本指 ...

  9. 开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt

    首先,大家可以看下这个链接 Windows GUI自动化测试技术的比较和展望 . 这篇文章介绍了Windows中GUI自动化的三种技术:Windows API, MSAA - Microsoft Ac ...

随机推荐

  1. Focus, w/o disturbance

    Focus = Aim + Execution + Persistence Disturbance = Disappointment + Anxiety + Failure

  2. xtrabackup_binlog_pos_innodb 和 xtrabackup_binlog_info

    用过 xtrabackup 工具的 innobackupex 脚本备份数据的人可能会注意到,–apply-log 处理过的备份数据里有两个文件说明该备份数据对应的 binlog 的文件名和位置.但有时 ...

  3. Linux4:useradd、userdel、passwd、groupadd、chgrp、chown、df、du、sort、wget

    useradd 添加新的用户账号,只有root账户可以操作 -d 目录:指定用户主目录(默认在home下),若此目录不存在可同时使用-m创建主目录 -g 用户组:指定用户所属的用户组 -G 用户组:指 ...

  4. npm穿墙

    GWF 很给力,很多东西都能墙掉,但是把 npm 也纳入黑名单,不知道 GWFer 是怎么想的.FQ翻了好多年了,原理其实也挺简单的,proxy 嘛! » 方法一 A) 国内源,http://cnpm ...

  5. 走进AngularJs(八) ng的路由机制

    在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而a ...

  6. 微软专家推荐11个Chrome 插件

    Web开发人员,需要长时间使用浏览器,尽管Windows10 Edge浏览器启动非常快速,且支持110多种设备,Edge支持基于JS 扩展,但也删除了很多旧功能像Active-X等插件.多数情况下,插 ...

  7. ehcache2拾遗之cache持久化

    问题描述 应用在使用过程中会需要重启等,但是如果ehcache随着应用一起重启,那么刚重启的时候就会出现大量的miss,需要一定的访问量来重建缓存,如果缓存能够持久化,重启之后可以复用将会有助于缓解重 ...

  8. Android消息机制

    每一个Android应用在启动的时候都会创建一个线程,这个线程被称为主线程或者UI线程,Android应用的所有操作默认都会运行在这个线程中. 但是当我们想要进行数据请求,图片下载,或者其他耗时操作时 ...

  9. 为什么Java方法里面不能再嵌套方法?

    直接原因: 这是Java基本语法定义的,方法中不可以再次声明方法,只能调用其他的方法. 个人理解: 1.方法栈是需要一个载体的,这个载体就是Class,如果一个方法的上一级不是一个类,就说明没有载体. ...

  10. Android开发学习之路-使用Handler和Message更新UI

    在Android中,在非主线程中更新UI控件是不安全的,app在运行时会直接Crash,所以当我们需要在非主线程中更新UI控件,那么就需要用到Handler和Message来实现 Demo中,使用到一 ...