【问题标题】:Win32 - GetMessage from another threadWin32 - 从另一个线程获取消息
【发布时间】:2013-07-02 20:17:22
【问题描述】:

根据这个线程:Can the HWND from CreateWindow/CreateDialog be GetMessage'd from another thread?,看来我不能在另一个线程中使用主线程的 HWND 使用 GetMessage。

我只是试图使用从新线程调用的 GetMessage 来获取编辑文本中的值。有什么方法可以做到这一点?

【问题讨论】:

    标签: winapi getmessage


    【解决方案1】:

    如果您想从编辑控件中获取值,您实际上根本不使用GetMessageGetMessage 用于接收消息,但要从窗口中获取文本,您必须发送消息 - 即您使用 SendMessage

    要发送的消息是WM_GETTEXT(前面是WM_GETTEXTLENGTH)。或者更简单,使用操作系统为您提供的包装函数之一 - 在本例中为 GetWindowTextGetDlgItemText。它们可以很好地跨线程边界工作(实际上甚至可以跨进程边界)。

    【讨论】:

    • “或者更简单,使用操作系统为您提供的包装函数之一 - 在本例中为 GetWindowText 或 GetDlgItemText” - 极具争议的建议:例如,在版本 6 Spy++ 之后,其作者甚至替换了 GetWindowText发送消息 (WM_GETTEXT)...
    • 引文? GetWindowText 只是为同一进程中的线程发送 WM_GETTEXT,没有有效的区别。跨进程更好,因为如果目标进程没有响应,它不会挂起,而您自己发送消息会。
    • Please - citation: "将指定窗口标题栏的文本(如果有)复制到缓冲区中。如果指定窗口是控件,则复制该控件的文本。但是, GetWindowText 无法在另一个应用程序中检索控件的文本”。 (GetWindowText, MSDN)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2019-09-16
    相关资源
    最近更新 更多