我正在尝试使用c ++从spy ++中的'Messages'窗口获取文本。
我试图向窗口及其子项发送WM_GETTEXT
,LB_GETMESSAGE
消息,但它无效。
在记事本上测试的代码并且它工作正常,所以如何做到这一点?
我将此函数调用为EnumChildWindows(spyHwnd,EnumChildProc,1); // spyHwnd是'Messages'窗口的句柄
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;
}
答案 0 :(得分:0)
您正在寻找的窗口有一个“AfxWnd80u”类。我很确定它是画主。除了绘画和鼠标相关的消息之外,它似乎没有收到任何消息。 所有者绘制意味着Spy ++在内部将文本存储在某处并手动绘制窗口画布。
如果在同一列表中打开“消息属性”窗口,则可以看到正在使用的标准列表框控件。它显然有不同的行为 - 选择看起来不同,滚动更平滑(这是一个很差的证据,因为这些东西可以定制,但仍然有点说明 - 为什么你会在一个应用程序中做不同的事情?)
如果您在网上搜索“获取文本AfxWnd”,您可以看到很多没有答案的问题。有些人试图模拟Ctrl + C并获取剪贴板内容,但Spy ++ Messages窗口似乎不支持Ctrl + C.
所以,这里没有简单的WinAPI方式。