为什么我获取不了QQ聊天对话框中的聊天内容(QQ2008)
#include <windows.h>
#include <stdio.h>int main()
{
// 获取QQ聊天对话框窗口句柄
HWND hWnd = NULL;
while (TRUE)
{
// 获取QQ窗口
hWnd = ::FindWindowEx(NULL, hWnd, "#32770", NULL);
if (NULL == hWnd)
return 1;
// 通过获取发送按钮判断该窗口是否为聊天窗口
if (NULL != FindWindowEx(hWnd, NULL, "Button", "发送(S)"))
break;
}
// 获取输出窗口名称
char szName[1024] ="\0";
GetWindowText(hWnd, szName, 1023);
printf("WndName:%s\n", szName);
// 获取输入对话框句柄
HWND hQQWnd = NULL;
while (TRUE)
{
// 聊天对话框下有多个AfxWnd42类
hQQWnd = FindWindowEx(hWnd, hQQWnd, "AfxWnd42", NULL);
if (NULL != hQQWnd)
{
// 判断该窗口是输入对话框
if (NULL != ::FindWindowEx(hQQWnd, NULL, "RichEdit20A", NULL))
break;
continue;
}
return 1;
}
// 聊天内容显示对话框在输入对话框后面(测试时的确和spy获取的句柄相同)
hQQWnd = ::FindWindowEx(hWnd, hQQWnd, "AfxWnd42", NULL);
if (NULL == hQQWnd)
return 1; // 获取聊天内容
char szText[5000] = "\n";
SendMessage(hQQWnd, WM_GETTEXT, 4999, (long)szText);
printf("Text: %s\n", szText);
return 0;
}
#include <windows.h>
#include <stdio.h>int main()
{
// 获取QQ聊天对话框窗口句柄
HWND hWnd = NULL;
while (TRUE)
{
// 获取QQ窗口
hWnd = ::FindWindowEx(NULL, hWnd, "#32770", NULL);
if (NULL == hWnd)
return 1;
// 通过获取发送按钮判断该窗口是否为聊天窗口
if (NULL != FindWindowEx(hWnd, NULL, "Button", "发送(S)"))
break;
}
// 获取输出窗口名称
char szName[1024] ="\0";
GetWindowText(hWnd, szName, 1023);
printf("WndName:%s\n", szName);
// 获取输入对话框句柄
HWND hQQWnd = NULL;
while (TRUE)
{
// 聊天对话框下有多个AfxWnd42类
hQQWnd = FindWindowEx(hWnd, hQQWnd, "AfxWnd42", NULL);
if (NULL != hQQWnd)
{
// 判断该窗口是输入对话框
if (NULL != ::FindWindowEx(hQQWnd, NULL, "RichEdit20A", NULL))
break;
continue;
}
return 1;
}
// 聊天内容显示对话框在输入对话框后面(测试时的确和spy获取的句柄相同)
hQQWnd = ::FindWindowEx(hWnd, hQQWnd, "AfxWnd42", NULL);
if (NULL == hQQWnd)
return 1; // 获取聊天内容
char szText[5000] = "\n";
SendMessage(hQQWnd, WM_GETTEXT, 4999, (long)szText);
printf("Text: %s\n", szText);
return 0;
}
信息框没研究过。不知道是不是类似。
#include <windows.h>
#include <stdio.h>int main()
{
// 获取QQ聊天对话框窗口句柄
HWND hWnd = NULL;
while (TRUE)
{
// 获取QQ窗口
hWnd = ::FindWindowEx(NULL, hWnd, "#32770", NULL);
if (NULL == hWnd)
return 1;
// 通过获取发送按钮判断该窗口是否为聊天窗口
if (NULL != FindWindowEx(hWnd, NULL, "Button", "发送(S)"))
break;
}
// 获取输出窗口名称
char szName[1024] ="\0";
GetWindowText(hWnd, szName, 1023);
printf("WndName:%s\n", szName);
// 获取聊天对话框的显示窗口句柄
HWND hQQWnd = ::FindWindowEx(hWnd, NULL, "RichEdit20A", NULL);
if (NULL == hQQWnd)
return 1; // 获取聊天内容
char szText[5000] = "\0";
SendMessage(hQQWnd, WM_GETTEXT, 4999, (long)szText);
printf("Text: %s\n", szText);
return 0;
}