吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4089|回复: 3
收起左侧

[C&C++ 原创] 【C++】模仿Spy++

  [复制链接]
碧天澈水 发表于 2020-2-16 22:27
背景:
      新人一枚,目前在学习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

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Xw丶小威 发表于 2020-2-17 14:54
鼓励发帖。支持一下。
luxuryang 发表于 2020-8-24 10:36
xiaohe_nh 发表于 2022-1-30 17:33
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 09:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表