吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1413|回复: 16
收起左侧

[求助] 各位老师,c语言中遍历获取已知父窗口下所有子窗口句柄

[复制链接]
jtwc 发表于 2022-2-27 20:24
各位老师,c语言中遍历获取已知父窗口下所有子窗口句柄出错,该如何改呢?谢谢了,源码如下:
#include <Windows.h>
#include <iostream>
#include <string.h>

using namespace std;

int main()
{
        HWND hd = FindWindow(NULL, "窗口5.0");        //得到父窗口
        hd = GetWindow(hd, GW_CHILD);        //得到父窗口上第一个子窗口
        char s[200] = { 0 };
        int num = 1;
        while (hd != NULL)                    //循环得到所有的子窗口
        {
                memset(s, 0, 200);
                GetWindowText(hd, s, 200);
                cout << num++ << ": " << s << endl;
                hd = GetNextWindow(hd, GW_HWNDNEXT);
        }

        getchar();
        return 0;
}

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

 楼主| jtwc 发表于 2022-2-27 20:28
出错如下图
1.png
zhiwoda 发表于 2022-2-27 20:45
本帖最后由 zhiwoda 于 2022-2-27 20:48 编辑

[Java] 纯文本查看 复制代码
 
HWND hWnd = NULL;
        hWnd = ::FindWindow(_T("XXX"), NULL);
       
        if (hWnd)
        {  
               
                HWND hChild = ::GetWindow(hWnd, GW_CHILD);  
               

               
                
                while (hChild)
                {
                        char* buf1 = new char[512]; 

                        ::GetWindowsText(hChild, buf1, 512); 

                        CString str1 = buf1; 
                          
                         
                       
                        hChild = ::GetWindow(hChild, GW_HWNDNEXT);
                }
        } 
 楼主| jtwc 发表于 2022-2-27 21:05
zhiwoda 发表于 2022-2-27 20:45
[mw_shl_code=java,true]
HWND hWnd = NULL;
        hWnd = ::FindWindow(_T("XXX"), NULL);

谢谢老师,不过出错了
1.png
zhiwoda 发表于 2022-2-27 21:06
jtwc 发表于 2022-2-27 21:05
谢谢老师,不过出错了

你用的vs201几
 楼主| jtwc 发表于 2022-2-27 21:09

老师,2015,谢谢了
 楼主| jtwc 发表于 2022-2-27 21:37
本帖最后由 jtwc 于 2022-2-27 21:39 编辑

老师,改了一下,不报错了,但没有显示

#include <windows.h>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <stdio.h>
#include <tchar.h>
#include <string.h>

using namespace std;

int main()
{
        
        HWND hWnd = NULL;
         hWnd = ::FindWindow(_T("窗口5.0"), NULL);

        if (hWnd)
        {

                HWND hChild = ::GetWindow(hWnd, GW_CHILD);

               
                while (hChild)
                {
                //        char* buf1 = new char[512];
                        char buf1[512] = { 0 };
                        int num = 1;
                        memset(buf1, 0, 512);
                        ::GetWindowText(hChild, buf1, 512);
                        cout << num++ << ": " << buf1 << endl;
                //        CString str1 = buf1;



                        hChild = ::GetNextWindow(hChild, GW_HWNDNEXT);
                }
        }
        getchar();
        return 0;
}
zhiwoda 发表于 2022-2-27 21:40
jtwc 发表于 2022-2-27 21:09
老师,2015,谢谢了

[Java] 纯文本查看 复制代码
#include <iostream>
#include <Windows.h>
#include <locale>

using namespace std;


int main()
{

        HWND hWnd = ::FindWindow(NULL, L"XXXX");

        if (hWnd)
        {
                HWND hChild = ::GetWindow(hWnd, GW_CHILD);

                while (hChild)
                {
                        char* buf = new char[512];

                        ::GetWindowText(hChild, LPWSTR(buf), 512);

                        hChild = ::GetWindow(hChild, GW_HWNDNEXT);



                        setlocale(LC_ALL, "chs");
                        wprintf(L"buf = %s\n", buf);
                }
        }
        else
        {
                printf("Hello,World!\n");
        }



        system("pause");


        return 0;
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
jtwc + 1 + 1 我很赞同!

查看全部评分

 楼主| jtwc 发表于 2022-2-27 21:50
zhiwoda 发表于 2022-2-27 21:40
[mw_shl_code=java,true]#include
#include
#include

谢谢老师,不过显示和我写的一样
1.png
zhiwoda 发表于 2022-2-27 21:52
jtwc 发表于 2022-2-27 21:50
谢谢老师,不过显示和我写的一样

有的是duilib写 的窗体,常规手段捕获不到,要用到钩子hook等手段
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 16:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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