如何使用WinAPI读取MessageBox文本

4 .net c# windows winapi messagebox

如何阅读标准Win消息框(Info)的消息?

运用

SendMessage(this.HandleControl, WM_GETTEXT, builder.Capacity, builder);
Run Code Online (Sandbox Code Playgroud)

我只能读取消息框的标题或按钮的文本,而不是消息本身.

谢谢.

备注(来自问答):

this.HandleControl 是消息框窗口的处理程序

间谍++显示没有子控件按钮.这就是它让我觉得Message Boxes有自己的方式来保持文本不使用标签

这是一个用delphi编写的遗留应用程序,按照Spy ++,按钮的类是TButton,但是除了对话框窗口中的按钮之外,没有任何控件.

在检查记事本窗口后,图像和文本都是"可选择的",我想我的应用程序不使用标准的MessageBox.仍然,我如何从文本中提取文本?我可以看到Spy ++ Finder工具中没有选择我的delphi应用程序中的标签.

Sco*_*tTx 7

消息文本位于模式MessageBox对话框窗口的标签控件中.您必须获取MessageBox对话框(win32 API FindWindow)的窗口句柄,然后检索控件的窗口句柄(win32 API GetDlgItem),然后从该窗口win32 API GetWindowText中检索文本.

编辑 -

TCHAR text[51] = {0};
HWND msgBox = ::FindWindow(NULL, TEXT("MessageBoxCaption"));
HWND label = ::GetDlgItem(msgBox, 0xFFFF);
::GetWindowText(label, text, sizeof(text)-1);
Run Code Online (Sandbox Code Playgroud)