我之前在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;
}
答案 0 :(得分:0)
您要查找的窗口的ID可以从源代码或Spy ++中确定。 EnumChildWindows返回每个子窗口HWND。对于每个HWND,您可以调用GetWindowLong(hwnd,GWL_ID)来获取该子窗口的ID。当它与目标ID匹配时,您找到了可以与WM_GETTEXT一起使用的HWND来读取窗口的文本。