3

我正在尝试使用 C++ 从 spy++ 中的“消息”窗口获取文本。

我试图向窗口及其子级发送消息,但它不起作用WM_GETTEXTLB_GETMESSAGE

在记事本上测试的代码,它工作正常,那么如何做到这一点?

我将此函数称为 EnumChildWindows(spyHwnd,EnumChildProc,1); //spyHwnd 是“消息”窗口的句柄

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
  TCHAR text[40];
  int length = 0;
  int index = 5;
  length = SendMessage(hwnd,LB_GETTEXT,index,(LPARAM)text);//or WM_GETTEXT & maxLength=40

  return true;
}
4

1 回答 1

0

您正在寻找的窗口有一个“AfxWnd80u”类。我很确定它是所有者绘制的。除了绘画和鼠标相关的消息之外,它似乎没有收到任何消息。所有者绘制意味着 Spy++ 将文本存储在内部某处并手动绘制窗口画布。

如果在同一个列表中打开“消息属性”窗口,您可以看到正在使用的标准列表框控件。它显然有不同的行为 - 选择看起来不同,滚动更流畅(这是一个糟糕的证据,因为这些东西可以定制,但仍然有点说明 - 为什么你会在一个应用程序中做不同的事情?)

如果你在网上搜索“get text AfxWnd”,你会看到很多没有答案的问题。有些人求助于模拟 Ctrl+C 并获取剪贴板内容,但 Spy++ Messages 窗口似乎不支持 Ctrl+C。

所以,这里没有简单的 WinAPI 方式。

于 2012-09-13T11:39:15.277 回答