C++ C++;HexChat SendMessage get Chat
我以前在VisualBasic中做过类似的事情,但那是很久以前的事了,是为Wolfenstein等人做的。我知道我将不得不使用SendMessage或WM_GETTEXT,所以我需要的只是代码,它将不断地从聊天窗口获取文本。现在hexchat是开源的,但我不知道如何进行,如何获取需要指定的ID。我宁愿不使用句柄,因为每次都要重新编译它。我知道这要求很多,但在过去的几天里,我一直在努力解决这个问题,但没有成功。非常感谢您的帮助!谢谢 Oops还忘了提到,既然HexChat是开源的,我们应该能够使用GetDlgItem()吗C++ C++;HexChat SendMessage get Chat,c++,sendmessage,C++,Sendmessage,我以前在VisualBasic中做过类似的事情,但那是很久以前的事了,是为Wolfenstein等人做的。我知道我将不得不使用SendMessage或WM_GETTEXT,所以我需要的只是代码,它将不断地从聊天窗口获取文本。现在hexchat是开源的,但我不知道如何进行,如何获取需要指定的ID。我宁愿不使用句柄,因为每次都要重新编译它。我知道这要求很多,但在过去的几天里,我一直在努力解决这个问题,但没有成功。非常感谢您的帮助!谢谢 Oops还忘了提到,既然HexChat是开源的,我们应该能够使用
#定义WIN32_LEAN_和_MEAN
#包括
#包括
使用名称空间std;
void findExchat()
{
HWND hwndNotepad=FindWindow(L“gdkWindowToplevel”,NULL);
如果(NULL!=hwndNotepad)
{
HWND hwndEdit=FindWindowEx(hwnnotepad,NULL,L“Chat”,NULL);
如果(NULL!=hwndEdit)
{
int textLen=(int)SendMessage(hwndEdit,WM_GETTEXTLENGTH,0,0);
如果(0 您要查找的窗口ID可以通过源代码或Spy++确定。每个子窗口HWND都由EnumChildWindows返回。对于每个子窗口HWND,您可以调用GetWindowLong(HWND,GWL_ID)获取子窗口的ID。当它与目标ID匹配时,您已经找到了可以与WM_GETTEXT一起使用的HWND来读取窗口的文本。开源与使用GetdGitem
有什么关系?请注意,还有GetWindowText
和GetWindowTextLength
。您没有得到GetdGitem吗代码>来自源代码?如果不是,您是如何获得它的?我还通过spy++查看了hexchat,唯一命名的窗口是顶层。下面的所有内容都是“”
你会怎么做?嗯,EnumChildWindows
会得到所有的。这取决于你有多少独特的信息。好吧,我运行了一些代码,它返回了所有的子窗口,但它们看起来像句柄。我要测试每一个吗?如果是这样,我会怎么做?如果每个子窗口都没有som一段特定的信息,可以区分你需要的信息和其他信息,并且你可以识别,然后你必须找到正确的控制,就像你说的那样。如果它可以通过来源确定,那么我如何找到它?:我几乎搜索了整件事,没有找到任何突出的东西.如果你能看一下,我会非常感激的!嗯…我想添加一些东西来帮助我找到它,但我找不到任何在线论坛做过类似的事情。
#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;
}