有没有什么办法可以从threadId中find,如果一个线程有消息队列?
基本上有一些窗口的API只有当一个线程有消息queue.window
delphi – lockingTPanel中的子控件,但使用默认的油漆
是否有一个工具来窥探发送到窗口的消息
已检测到CallbackOnCollectedDelegate
delphi:如何响应WM_SettingChange / WM_WinIniChange?
是否有可能通过Windows键(可能没有挂钩)捕获Windows开始菜单popup窗口?
您可以使用PostThreadMessage和线程的ID。 如果PostThreadMessage返回false并且GetLastError返回ERROR_INVALID_THREAD_ID ,则线程ID无效或线程没有消息队列。
更多信息http://msdn.microsoft.com/en-us/library/ms644946(VS.85).aspx
在一个多线程的世界里,你不能正确地考虑在你看的时候会改变的事情。 线程消息队列特别有趣; 它们是在线程需要它们时创建的。 所以你能得到的唯一答案是“不是当我上次检查”。
因此,如果没有线程消息队列,大多数Windows API将不会真正失败。 他们只是创造它。 有一个例外, PostThreadMessage 。 这将需要创建一个线程消息队列的另一个线程,可能在同一时间,其他线程正在创建自己的。 因此,它是唯一可能会失败的API。
但是PostThreadMessage失败了吗? 这告诉你(通过`GetLastError()),当Windows试图传递你的消息时,这个队列在重要时刻就不存在了。
我认为IsGUIThread是需要的功能
你可以尝试使用AttachThreadInput从一个线程,它有一个消息队列。 如果在调用中引用的任何线程没有队列,我相信AttachThreadInput失败。 请注意,AttachThreadInput可能由于其他原因失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。