我的应用程序隐藏了它的窗口(因此隐藏了任务栏按钮)并且只停留在通知区域,代码如下:
Form1.Hide;
当我点击通知图标时,窗口会显示以下代码:
Form1.Show;
Application.Restore;
但是我想在执行第二个实例时显示窗口。我可以使用“文件映射”将任何数据从第一个实例传递到第二个实例。到目前为止,我只设法在窗口最小化时如何显示它(存在任务栏按钮),代码如下:
if IsIconic(FirstInstanceApplicationHandle) then ShowWindow(FirstInstanceApplicationHandle, SW_RESTORE);
SetForegroundWindow(FirstInstanceApplicationHandle);
那么我如何使第二个实例的第一个实例窗口可见?
最佳答案
最简洁的方法是向第一个应用程序发送一条消息,让它自行恢复。当应用程序自行恢复时,会执行一整套代码。这就是您通过调用 Application.Restore
获得的结果。这就是你需要发生的事情。
现在,很难从外部实现这一目标。所以让第二个应用程序向第一个应用程序发送消息,然后让第一个应用程序自行恢复。像现在一样调用 SetForegroundWindow
。您的第二个应用程序可以赠予它,但第一个应用程序不能以其他方式接受它。
您需要允许第二个应用程序发现第一个应用程序中的窗口句柄以将消息发送到。您的文件映射方法将允许这样做。请确保您使用的是不受娱乐影响的窗口句柄。例如 Application
句柄或使用 AllocateHWnd
制作的句柄。
关于windows - 如何使其他应用程序隐藏窗口从我的应用程序可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340974/