背景:
新人一枚,目前在学习win32编程中,发现有时会用到VS自带的Spy++,所以看看能不能自己写个,目前实现了部分功能。

先上vs自带的spy++:

VS的spy++
VS的spy++

如图,点击查找程序工具有点的图标,拖动到任意位置,下面会显示关于该窗口的一些信息。

自己的spy++(只有部分功能):

2.png

目前实现了遍历所有窗口,但是和vs自带的相比,还有感觉少点,其次,最主要的就是实现了鼠标拖动显示窗口信息。

遍历窗口信息:
自己写的递归把所有窗口遍历出来
[C++] 纯文本查看 复制代码//通过递归遍历所有窗口的子窗口
void CMySpyDlg::SubWindowInfo(HWND hwnd, HTREEITEM hTreeItem)
{
HWND hChildWnd = ::GetWindow(hwnd, GW_CHILD);

if (hChildWnd == NULL)
{
return;
}

do
{
//获取窗口标题
char strWindowText[MAX_PATH] = { 0 };
::GetWindowText(hChildWnd, strWindowText, MAX_PATH);

//获取窗口类名
char strWindowClassName[MAX_PATH] = { 0 };
::GetClassName(hChildWnd, strWindowClassName, MAX_PATH);

//将窗口句柄、窗口标题、窗口类名格式化
CString strFmt;
strFmt.Format("窗口 %08X %s %s", hChildWnd, strWindowText, strWindowClassName);

//显示到树控件
HTREEITEM hTreeNode = m_TreeCtrl.InsertItem(strFmt, hTreeItem);
m_TreeCtrl.SetItemData(hTreeNode, (DWORD_PTR)hwnd);

SubWindowInfo(hChildWnd, hTreeNode);

hChildWnd = ::GetWindow(hChildWnd, GW_HWNDNEXT);

} while (hChildWnd != NULL);
}

查找窗口:
其实就是调用的api,通过鼠标位置来进行捕获窗口,进而显示窗口信息。

最后:
本人第一次发帖,知道好些东西没说清楚,但是又实在不知道怎么用文字描写清楚,如果又感兴趣的,可以共同讨论。欢迎指教。

编译环境:VS2015
链接:https://pan.baidu.com/s/1G79r2eEeFxgN40WidEoZ0g提取码:gofy

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源