将消息传递到另一个窗口

时间:2011-09-22 11:36:36

标签: delphi winapi windows-messages

我想编写一个应用程序,它将收到的每条消息传递给另一个窗口。例如,我有一个应用程序,用户可以按某些键,将鼠标移到它上面等等,我希望所有这些消息传递给,例如,MS Paint。

我该怎么做?有任何想法吗?据我所知,将击键发送到另一个窗口可能会有问题,所以请提供建议。

修改

好的,也许我会给你更多关于我正在寻找的内容。

我的应用程序在表单上显示另一个应用程序的窗口。现在我想使用发送到我的应用程序表单的消息来控制另一个窗口(如按键,鼠标移动等)。

我一直在考虑将我的表单收到的所有消息传递给应用程序的窗口,我将其“嵌入”到我自己的窗口中。通过'嵌入',我的意思是在我的表单上显示应用程序窗口。

也许我的问题有另一个解决方案。请指教。

感谢您的时间。

3 个答案:

答案 0 :(得分:4)

某些消息(即输入消息)通过消息队列到达,其余消息直接发送到收件人窗口。因此,您要求的是要求您执行以下所有操作:

  1. 实现一个顶级消息循环,从队列中检索消息并将其发送到另一个应用程序。
  2. 重新实现所有模态窗口循环以传递所有消息。
  3. 将流程中所有窗口的窗口过程替换为将所有消息传递到另一个应用程序的窗口过程。
  4. 寻找其他我未提及的邮件到达的机会。
  5. 我无法想象,无论问题是什么,这都将成为你问题的解决方案。

答案 1 :(得分:1)

转发邮件绝对可行且容易,但它可能无法满足您的期望。看看here

答案 2 :(得分:1)

覆盖表单的DefaultHandler()并将其获取的每条消息发布到另一个表单。如果表单中有任何显式的消息处理程序,甚至某些控件,那么您可能无法在DefaultHandler()中看到这些消息。