gpt4 book ai didi

c# - 如何使用 WinAPI 读取 MessageBox 文本

转载 作者:可可西里 更新时间:2023-11-01 13:52:34 24 4
gpt4 key购买 nike

如何读取标准 Win 消息框(信息)的消息?

使用

SendMessage(this.HandleControl, WM_GETTEXT, builder.Capacity, builder);

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

谢谢。

笔记(来自问答):

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

Spy++ 显示没有子控件禁止按钮。这就是它让我想到 Message Boxes 有自己的方式来保存文本而不使用标签的原因

这是一个用 delphi 编写的遗留应用程序,根据 Spy++,按钮的类是 TButton,但除了对话框窗口内的按钮外,仍然没有其他控件。

检查记事本窗口后,图像和文本都是“可选择的”,我想我的应用程序没有使用标准 MessageBox。不过,我该如何从事物中提取文本呢?我可以看到 Spy++ Finder 工具无法选择我的 Delphi 应用程序中的任何标签。

最佳答案

消息文本位于模态 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);

关于c# - 如何使用 WinAPI 读取 MessageBox 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com