C ++ HexChat SendMessage获取聊天

时间:2014-01-03 02:54:24

标签: c++ sendmessage

我之前在visual basic中做过类似的事情,但很久以前就是为了Wolfenstein ET。我知道我将不得不使用SendMessage或WM_GETTEXT所以我需要的是不断从聊天窗口获取文本的代码。现在,hexchat是开源的,但我不知道如何去获取指定所需的ID。我宁愿不使用句柄,因为我每次都要重新编译它。我知道这要求很多,但我一直在努力解决这个问题,过去几天没有成功。任何帮助是极大的赞赏!谢谢!

哎呀也忘了提到,因为HexChat是开源的,我们是否应该能够使用GetDlgItem()?

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <iostream>
using namespace std;

void FindHexChat()

{

HWND hwndNotepad = FindWindow(L"gdkWindowToplevel", NULL);

if (NULL != hwndNotepad)
{

    HWND hwndEdit = FindWindowEx(hwndNotepad, NULL, L"Chat", NULL);

    if (NULL != hwndEdit)
    {
        int textLen = (int)SendMessage(hwndEdit, WM_GETTEXTLENGTH, 0, 0);

        if (0 < textLen)
        {

            const int bufferSize = 1024;
            char textBuffer[bufferSize] = "";
            SendMessage(hwndEdit, WM_GETTEXT, (WPARAM)bufferSize, (LPARAM)textBuffer);

 << cout << textBuffer << endl;



}
            else
            {

            }
        }
        else
        {

        }
    }
    else
    {
 endl;
    }

}

int main()
{
    FindHexChat();

    return 0;
}

1 个答案:

答案 0 :(得分:0)

您要查找的窗口的ID可以从源代码或Spy ++中确定。 EnumChildWindows返回每个子窗口HWND。对于每个HWND,您可以调用GetWindowLong(hwnd,GWL_ID)来获取该子窗口的ID。当它与目标ID匹配时,您找到了可以与WM_GETTEXT一起使用的HWND来读取窗口的文本。