0

我想知道一种方法来执行以下操作:

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

我希望第二个实例向第一个实例发送消息,而不使用广播;我想要一种方法来找到第一个实例的句柄以直接向它发送消息。

第一个实例必须有一个类名才能找到,而第二个实例尚未创建,这样它就不会向自己发送消息。

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

4

3 回答 3

2

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

但是您可以使用AllocateHWnd函数创建不可见的窗口- 请参阅 TTimer 源代码作为示例。使用 SetWindowText 设置标题以便于搜索

于 2012-11-11T03:49:27.487 回答
1

您可以使用共享内存来传递数据。详情请看这篇文章

于 2012-11-11T08:37:12.037 回答
1

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

于 2012-11-11T19:01:09.873 回答