对其它程序的编辑框进行操作

来源:互联网 发布:圣经漏洞 知乎 编辑:程序博客网 时间:2024/06/05 05:55

首先大家很容易的想到用FindWindow函数来进行查找其句柄.就拿记事本来说.如果你用FindWindow获取其句柄是获取不到编辑框的句柄的,只能获取它父窗口的句柄.所以我们可以调整一下思路.先获取它父窗口的句柄,然后通过它找到子窗口句柄.

效果如图:

1.发送内容给其它程序的编辑框

    //获取父窗口句柄    HWND hFindParent = ::FindWindow(nullptr, L"test.txt - 记事本");    if (hFindParent)    {        //获取子窗口句柄        HWND hFindEdit = ::FindWindowEx(hFindParent, nullptr, L"Edit", nullptr);        if (hFindEdit)        {            UpdateData(TRUE);            CString s;            GetDlgItemText(IDC_EDIT, s);            //发送              ::SendMessage(hFindEdit, WM_SETTEXT, 1024, (LPARAM)s.GetBuffer());        }    }

2.获取其它程序编辑框的内容

    //获取父窗口句柄    HWND hFindParent = ::FindWindow(nullptr, L"test.txt - 记事本");    if (hFindParent)    {        //获取子窗口句柄        HWND hFindEdit = ::FindWindowEx(hFindParent, nullptr, L"Edit", nullptr);        if (hFindEdit)        {            TCHAR szBuffer[1024]=TEXT("");            //获取              ::SendMessage(hFindEdit, WM_GETTEXT, 1024, (LPARAM)szBuffer);            SetDlgItemText(IDC_EDIT, szBuffer);            UpdateData(FALSE);        }

有些软件的界面并没有编辑框,都是一些自绘的控件,所以发送/获取失败是正常的.

0 0
原创粉丝点击