1、用spy++看该程序的编辑框,类型是EDIT,但是SPY++却没能获得他的内容,显示是一个黑色的方块,但实际上编辑框里是有一长串文本的;这种情况是否意味着就没办法读取edit文本了呢?
2、如果程序里的的控件是自定义类型的treeview,有没有办法获得他的内容啊?

解决方案 »

  1.   

    试试这个/*******************************************************************
     文件名        :WinMain.cpp
     创建者        :hankcs
     创建时间      :2010-6-26 18:45:49
     功能描述      :获取其他程序中的文本Demo,打开记事本输入随便
                     几个字符来测试本程序
                     
     ******************************************************************/
    #include <windows.h>
    #include <stdio.h>BOOL CALLBACK EnumChildWindowsProc(HWND hwndChild, LPARAM lParam) // 枚举子窗体的函数
    {
        CHAR szClassName[MAX_PATH];
        ::GetClassNameA(hwndChild, szClassName, sizeof(szClassName)/sizeof(CHAR));
        if(stricmp(szClassName, "Edit") == 0)
        {
            ::SendMessage(hwndChild, WM_GETTEXT, (WPARAM)sizeof(szClassName)/sizeof(CHAR), (LPARAM)szClassName);
            MessageBox(NULL, szClassName, "Debug", MB_OK);
        } 
        return (true);
    }BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) 
    {
        char wtitle[512];
        GetWindowText(hwnd, wtitle, sizeof(wtitle));
        if (strstr(wtitle , "记事本"))       //窗口标题含有特定字符
        {
            EnumChildWindows(hwnd, EnumChildWindowsProc, NULL);
        }
        return (true);
    }///////////////////////////WinMain//////////////////////////////////
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
        EnumWindows(EnumWindowsProc, 0);
        return 0;
    }
    ///////////////////////////End Sub//////////////////////////////////
      

  2.   

    SPY++却没能获得他的内容,显示是一个黑色的方块
    -----------
    有可能EDIT进行处理了,可能自己HOOK了WM_GETTEXT消息,并返回黑色的方块,所有旧这样了,只能用其他方法了