Windows GUI代码与Windows消息问题调试利器
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消息问题调试利器的更多相关文章
- 体验Code::Blocks下的Windows GUI编程(32 bit and 64 bit)
0. 前言 不知道为什么,几乎所有的C++编程教程都是从命令行版(控制台应用程序)的Hello World开始的.然而,对于现在的年轻人来说,从小就用鼠标点击窗口或图标操作电脑,对于那个神秘黑色的窗口 ...
- 用Nim语言开发windows GUI图形界面程序
前言 本文得到了“樂師”的大力支持, 我们一起调试程序到深夜,要是没有他的帮忙, 我不知道要多久才能迈过这道坎, 另外“归心”还有其他人也提供了帮助, 他们都来自于QQ群:“Nim开发集中营”4693 ...
- 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了
系统关闭窗体的事件顺序为: OnCloseQuery ----> OnClose ----> OnDestroy 下面的代码说明问题: unit Unit3; interface uses ...
- 【转】深入Windows内核——C++中的消息机制
上节讲了消息的相关概念,本文将进一步聊聊C++中的消息机制. 从简单例子探析核心原理 在讲之前,我们先看一个简单例子:创建一个窗口和两个按钮,用来控制窗口的背景颜色.其效果 图1.效果图 Win32 ...
- 如何实现Windows Phone代码与Unity相互通信(事件方式)
源地址:http://www.cnblogs.com/petto/p/3909063.html 一些废话 昨天写一篇今天写一篇.不是我闲的蛋疼,是今天一天碰到了好几个恼人的问题,浪费一天时间搞定.本文 ...
- Python GUI编程(Tkinter) windows界面开发
Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...
- windows gui测试工具:AutoIt
windows gui测试工具:AutoIt 2017-01-09 目录 1 简介2 示例1 记事本自动化操作3 示例2 上传文件 1 简介 返回 AutoIt v3 是用以编写并生成具有 BASIC ...
- WPF会重写Windows GUI的历史吗?
原文地址:http://tech.it168.com/zx/2007-09-15/200709141320653.shtml 你可能对微软的.NET框架3.0版本的最近的一次更新感到有点奇怪.主版本指 ...
- 开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt
首先,大家可以看下这个链接 Windows GUI自动化测试技术的比较和展望 . 这篇文章介绍了Windows中GUI自动化的三种技术:Windows API, MSAA - Microsoft Ac ...
随机推荐
- C#函数式编程之可选值
在我们的实际开发中已经会遇到可空类型,而在C#中自从2.0之后就提供了可空类型(Nullable<T>),普通的值类型是不可以赋值为NULL,但是在类型的后面加上问号就变成了可空类型,这样 ...
- 团队项目——站立会议 DAY8
第八次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:在反复修改和审查后,处理功能模块代码出错处,完善并运行. 2.钟灵毓秀:再次检查代码,运行报错处的代码修改 ...
- Nim教程【六】
目前看来这是国内第一个关于Nim的系列教程 先说废话 Rust1.0已经发布了, 国内有一个人为这个事情写了一篇非常长的博客, 这篇文章我前几天草草的看了一下,只记得这位朋友追Rust的艰辛,其他内容 ...
- [.net 面向对象编程基础] (21) 委托
[.net 面向对象编程基础] (20) 委托 上节在讲到LINQ的匿名方法中说到了委托,不过比较简单,没了解清楚没关系,这节中会详细说明委托. 1. 什么是委托? 学习委托,我想说,学会了就感觉简 ...
- 新版markdown功能发布!支持github flavored markdown!
让大家久等了!新版markdown功能一直拖到今天才发布,很是愧疚...但不管怎么样,总算发布了! 今年1月份发布第一版markdown功能之后,很多园友反馈说做得很烂,我们综合大家的反馈之后发现不仅 ...
- 自定义样式的select下拉框深入探索
第一个版本: 首先实现自定义select下拉框应该具有的功能,我是选择将原来的select隐藏掉,自己在jquery代码中动态写进去<dl><dd><dt>这样的结 ...
- 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
最近在看算法,看到这个题,觉得挺经典的,收起. 分析: 1 .把问题归结为图结构的遍历问题.实际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每一个结点求这个图形的遍历路径,所有结点的遍历路 ...
- 关于Windows窗口框架
我们知道Windows的窗口消息处理函数是C方式, 面向过程的, 所以窗口框架的基本任务就是将它转成面向对象的方式, 确切的说如何将消息处理函数第一参数HWND转成对象指针. 关于这个问题, 其实网上 ...
- lua table序列化和反序列化
function serialize(obj) local lua = "" local t = type(obj) if t == "number" then ...
- Atitit USRqc62204 证书管理器标准化规范
Atitit USRqc62204 证书管理器标准化规范 /atiplat_cms/src/com/attilax/cert/CertSrv4mv.java /** * */ package com. ...