我想知道如何做到以下几点:
应用程序启动,未创建任何表单。 第二个App实例启动,它检测到一个实例已在运行(已经排序)
我希望第二个实例向第一个实例发送一条消息,而不使用BROADCAST;我想找到第一个实例的句柄直接发送消息的方法。
第一个实例必须找到第2个尚未创建的类名,以便它不会将消息发送给自己。
在这种情况下我如何使用FindWindow?如何创建FindWindow可识别的无窗口类/对象?
答案 0 :(得分:2)
您无法通过FindWindow找到无窗口对象。
但您可以使用 AllocateHWnd 功能创建隐藏窗口 - 请参阅TTimer源代码示例。使用SetWindowText设置标题以便于搜索
答案 1 :(得分:1)
您可以使用共享内存传递数据。 See this article了解详情
答案 2 :(得分:1)
如果您知道其TApplication
属性的值,则可以向Title
窗口发送消息。发送实例可以临时将自己的Title
设置为不同的值,以免混淆FindWindow()
。接收实例可以使用TApplication.OnMessage
事件或TApplication.HookMainWindow()
方法接收消息。