C ++ HexChat SendMessage получить чат

0

Я делал что-то подобное раньше в визуальной форме, но это было давно, и это было для Wolfenstein ET. Я знаю, что мне придется использовать SendMessage или WM_GETTEXT, поэтому все, что мне нужно, это код, который будет постоянно получать текст из окна чата. Теперь hexchat - это open source, но я не знаю, как это сделать и получить идентификатор, который необходимо указать. Я бы предпочел не использовать дескриптор, так как мне пришлось бы перекомпилировать его каждый раз. Я знаю, что это требует многого, но я пытался понять это в течение последних нескольких дней без успеха. Любая помощь очень ценится! Благодарю!

К сожалению, также забыл упомянуть, что, поскольку 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;
}
  • 0
    Как быть с открытым исходным кодом связано с использованием GetDlgItem ? Обратите внимание, что есть также GetWindowText и GetWindowTextLength .
  • 0
    Разве вы не получаете GetDlgItem из источника? Если нет, то как ты это получил? Также я посмотрел на hexchat, хотя spy ++ и единственное названное окно - это верхний уровень. Все, что ниже, это "" Как бы вы поступили об этом?
Показать ещё 7 комментариев
Теги:
sendmessage

1 ответ

0
Лучший ответ

Идентификатор окна, который вы ищете, можно определить из исходного кода или с помощью Spy++. Каждое дочернее окно HWND возвращается EnumChildWindows. Для каждого из этих HWND вы можете вызвать GetWindowLong (hwnd, GWL_ID), чтобы получить идентификатор дочернего окна. Когда он совпадает с идентификатором цели, вы нашли HWND, который можно использовать с WM_GETTEXT, чтобы прочитать текст окна.

  • 0
    Если это можно определить по источнику, то как мне его найти? Github.com/HexChat/hexchat Я просмотрел почти все и не нашел ничего выдающегося. Если бы вы могли посмотреть и посмотреть, я был бы очень признателен!
  • 0
    Хм ... Ну, я хотел добавить что-то, что помогло бы мне найти это, но я не могу найти ни одного форума в Интернете, который бы делал что-то подобное.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню