windows - 如何使其他应用程序隐藏窗口从我的应用程序可见?

标签 windows delphi delphi-6

我的应用程序隐藏了它的窗口(因此隐藏了任务栏按钮)并且只停留在通知区域,代码如下:

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/

相关文章:

windows - Powershell 设置盖子关闭 Action

Python 3.4 - 使用 SAPI 的文本到语音

delphi - Delphi 的 TXMLDocument 如何决定使用哪个 MS XML 版本(3.0、6.0 甚至 4.0)?

delphi - 如何在 RichEdit 中将单行加粗?

delphi - 如何在使用 Indy 连接到 FTP 时加密凭据?

c++ - 如何使用消息框而不是 wcout

c++ - 使用 GetDIBits 函数对 _imp__GetDIBits@28 的 undefined reference

delphi - 如何编辑备忘录中的文本?

C++ 指向 struct 新数组的指针到 delphi 到 DLL 函数

android - 编译为 Android 应用程序时 Segoe UI 错误