Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从文本框中动态获取文本_C++_Winapi_Spy++ - Fatal编程技术网

C++ 从文本框中动态获取文本

C++ 从文本框中动态获取文本,c++,winapi,spy++,C++,Winapi,Spy++,我正在尝试从其他窗口动态获取文本(如果我在该窗口的文本字段中编写一些内容,然后启动我的程序,我必须查看我编写的内容)。因此,如果我使用getWindowText,它会给我一个静态初始化的文本框。这就是问题所在。类似于spy++的功能。 下面是我所做的代码示例: #include <Windows.h> #include <vector> #include <iostream> #include <string> #include <conio

我正在尝试从其他窗口动态获取文本(如果我在该窗口的文本字段中编写一些内容,然后启动我的程序,我必须查看我编写的内容)。因此,如果我使用getWindowText,它会给我一个静态初始化的文本框。这就是问题所在。类似于spy++的功能。 下面是我所做的代码示例:

#include <Windows.h>
#include <vector>
#include <iostream>
#include <string>
#include <conio.h> 
using namespace std;

int main() 
{
HWND hWnd;
MSG msg;
vector<HWND> a;
hWnd = FindWindow( NULL, "SomeList" );
vector<string> phrases;
char p[100];
if( !hWnd )
{
    cout << "Window hasn't been found " << endl;
    _getch();
    exit( 1 );
}

hWnd = GetWindow(hWnd, GW_CHILD);
while (hWnd !=0)
{
     hWnd = GetWindow(hWnd, GW_HWNDNEXT);
     GetClassName( hWnd, p, 10 );
     string k( p );
     if( k == "Edit" )
         a.push_back( hWnd );
     GetWindowText(hWnd,p,100);
      cout << p << endl;
}
phrases.resize( a.size() );

for( auto i = a.begin();i != a.end();i++ )
{
    int index = 0;
    GetWindowText( *i,p, 10 );
    string n( p );
    if( n.size() != 0 )
    {
        phrases[index] =  n;
        index++;
    }
}
_getch();
return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
HWND-HWND;
味精;
载体a;
hWnd=FindWindow(NULL,“SomeList”);
向量短语;
charp[100];
如果(!hWnd)
{
cout文件:

要在另一个进程中检索控件的文本,请发送 WM_直接获取文本消息,而不是调用GetWindowText

例如:

HWND hWndEdit;

[....]

char szText[ 128 ] = { 0 };
int cbCopied = SendMessage( hWndEdit, WM_GETTEXT, (WPARAM)sizeof( szText ),
                            (LPARAM)szText );

实际问题是什么?当我启动程序时,它不会读取我在文本框中写入的文本,而是读取静态初始化的文本。我需要从文本字段中读取文本,该字段不是由SetWindowText初始化的,而是从我在窗口中写入的内容中读取的,是您针对其第一个子项的编辑控件窗口?如果是这样的话,你可以直接跳过它。这是一个测试代码,当我把它全部结束时,它会有很大的变化,但问题仍然存在。我有一个测试程序,其中子窗口是编辑控件。从上面写的程序中,我想动态地获取在测试程序中编写的文本。这不是我的任务的答案ion.什么问题?要得到一个窗口的文本,你可以使用GetWindowText。你不能期望我们在你的脑海中阅读。问题是什么?这是一个测试代码,当我把它全部结束时,它会有很大的变化,但问题仍然存在。我有一个测试程序,其中子窗口是编辑控件。从上面编写的程序中,我想得到动态文本是写在测试程序中的。谢谢你的回答,我很感激。我会在几个小时后测试它,当我添加这些东西时,我会回复