从网站形式vc ++中检索textField hWnd中的文本

时间:2011-03-09 15:33:28

标签: visual-c++ mfc sendmessage

我正在编写一个自动填充任何win32应用程序中保存数据的应用程序。此应用程序在vc ++中为MFC完成。

工作过程是将程序发送到托盘,全局钩键盘,捕获CTRL + SHIFT + K(K = A添加,R删除,S发送信息,M修改信息,Q退出),encript /从MySql数据库中记录并保存/检索信息。

当程序捕获用户操作时,它会按如下方式扫描活动顶部窗口:

HWND hWndMW = GetForegroundWindow();
wchar_t buff[512];

this->ClearBuffer<wchar_t>(buff, 512);
GetClassName(hWndMW, buff, 512);
String^ sClassName = gcnew String(buff);
this->ClearBuffer<wchar_t>(buff, 512);

GetWindowText(hWndMW, buff, 512);
String^ sText = gcnew String(buff);

zOrder=0;           
EnumChildWindowsDelegate^ ecwDel = gcnew AutoComplete::EnumChildWindowsDelegate(this, &AutoComplete::hWndControls);
EnumChildWindows(hWndMW, ecwDel, (LPARAM) NULL);

检索信息的函数:

bool hWndControls(HWND hWnd, LPARAM lParam)
{
    wchar_t buff[512];
    zOrder++;

    this->ClearBuffer<wchar_t>(buff, 512);
    GetClassName(hWnd, buff, 512);
    String^ sClassName = gcnew String(buff);

    if (sClassName->ToUpper()->Contains("EDIT"))
    {
        char buff1[MAX_DATASIZE];
        this->ClearBuffer<char>(buff1, MAX_DATASIZE);
        int len = this->SendMessage(hWnd, WM_GETTEXT, MAX_DATASIZE, (LPARAM) buff1);
        buff1[len] = 0;
        String^ sTextInside = gcnew String(buff1);
        if(textInside!="") SaveData(hWndMW, hWnd, zOrder, sTextInside);
    }


    return true;
};

SaveData()仍有待开发。 问题是:

1-如何从网站表单(主要在Mozilla,IExplore或Google Crome中)检索信息?

2-有没有办法将信息与信息所在的控件匹配,而不是使用zOrder?我猜想可以从hWnd中找到类似“控制名称”的东西..

欢迎任何评论!谢谢,

米格尔

1 个答案:

答案 0 :(得分:0)

好的,在深入了解网络后,我发现了第一个问题:

http://www.codeproject.com/KB/applications/Sniffer.aspx

http://msdn.microsoft.com/en-us/library/aa366510%28VS.85%29.aspx - &gt;非常好的一步一步的例子

第二个问题仍然存在..

有没有办法唯一匹配窗口及其内容的信息?在concret我正在寻找EDIT和STATIC控件。

我发现另一件有趣的事情是,某些应用程序并没有真正显示EDIT或任何领域(主要是密码)中的某些数据,但它们可以看到该领域有一些数据,有关它是如何完成的任何想法?