Delphi:发送消息到同一应用程序的运行实例,没有任何TForm

时间:2012-11-11 03:33:17

标签: delphi sendmessage

我想知道如何做到以下几点:

应用程序启动,未创建任何表单。 第二个App实例启动,它检测到一个实例已在运行(已经排序)

我希望第二个实例向第一个实例发送一条消息,而不使用BROADCAST;我想找到第一个实例的句柄直接发送消息的方法。

第一个实例必须找到第2个尚未创建的类名,以便它不会将消息发送给自己。

在这种情况下我如何使用FindWindow?如何创建FindWindow可识别的无窗口类/对象?

3 个答案:

答案 0 :(得分:2)

您无法通过FindWindow找到无窗口对象。

但您可以使用 AllocateHWnd 功能创建隐藏窗口 - 请参阅TTimer源代码示例。使用SetWindowText设置标题以便于搜索

答案 1 :(得分:1)

您可以使用共享内存传递数据。 See this article了解详情

答案 2 :(得分:1)

如果您知道其TApplication属性的值,则可以向Title窗口发送消息。发送实例可以临时将自己的Title设置为不同的值,以免混淆FindWindow()。接收实例可以使用TApplication.OnMessage事件或TApplication.HookMainWindow()方法接收消息。