使用 activateWithOptions 聚焦应用程序 - 仅在非小型化时有效
Focusing App with activateWithOptions - only works if non-miniaturized
我正在尝试关注另一个进程的所有 windows,我知道它的 PID。
当我运行以下代码时:
app = [NSRuningApplication runningApplicationWithProcessIdentifier: 400];
[app activateWithOptions: (NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)]
显示所有 windows 而非 minimized/miniaturized。但是,如果显示 windows 的所有 windows minimized/miniaturized none。
如何在激活时取消最小化所有 windows?我也试过 SetFrontProcess
但那有完全相同的问题。
这是我针对该问题制作的截屏视频:https://www.youtube.com/watch?v=sR5uf4eR8js
编辑 - 古怪的解决方案
我发现了一个古怪的半解决方案,它是 运行 killall Dock
,但它没有最小化 所有 最小化 windows。我只需要取消最小化特定 PID 的 windows。
首先,要明确一点,-activateWithOptions:
是 激活 Firefox 的另一个实例。例如,您可以通过查看其 Window 菜单来判断。唯一的问题是它没有最小化任何 windows。这不一定是不正确的行为。例如,如果您使用 Command-Tab 切换到另一个 Firefox,而不是单击其 Dock 图标,它会变为活动状态但不会取消最小化其 window.
因此,您应该考虑保持现状。
不过,如果您真的想更改它,请尝试执行以下操作而不是 -activateWithOptions:
:
[[NSWorkspace sharedWorkspace] launchApplicationAtURL:app.bundleURL
options:NSWorkspaceLaunchAsync | NSWorkspaceLaunchWithoutAddingToRecents
configuration:@{}
error:NULL];
这大约相当于单击应用程序的 Dock 图标。或者从 Finder 打开应用程序。由于它已经 运行,现有实例将被激活并 sent the reopen application
(kAEReopenApplication
a.k.a. 'rapp'
) Apple event。如果 windows 的所有 windows 都被最小化,则标准行为将取消最小化 window。 (如果它没有打开 windows,它通常会创建一个新的默认 window。在文档编辑器中,这将是一个新的无标题文档。在 Firefox 中,这将是主页。 )
这不会取消最小化 all windows,但无论如何,这通常是不需要的。
我正在尝试关注另一个进程的所有 windows,我知道它的 PID。
当我运行以下代码时:
app = [NSRuningApplication runningApplicationWithProcessIdentifier: 400];
[app activateWithOptions: (NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)]
显示所有 windows 而非 minimized/miniaturized。但是,如果显示 windows 的所有 windows minimized/miniaturized none。
如何在激活时取消最小化所有 windows?我也试过 SetFrontProcess
但那有完全相同的问题。
这是我针对该问题制作的截屏视频:https://www.youtube.com/watch?v=sR5uf4eR8js
编辑 - 古怪的解决方案
我发现了一个古怪的半解决方案,它是 运行 killall Dock
,但它没有最小化 所有 最小化 windows。我只需要取消最小化特定 PID 的 windows。
首先,要明确一点,-activateWithOptions:
是 激活 Firefox 的另一个实例。例如,您可以通过查看其 Window 菜单来判断。唯一的问题是它没有最小化任何 windows。这不一定是不正确的行为。例如,如果您使用 Command-Tab 切换到另一个 Firefox,而不是单击其 Dock 图标,它会变为活动状态但不会取消最小化其 window.
因此,您应该考虑保持现状。
不过,如果您真的想更改它,请尝试执行以下操作而不是 -activateWithOptions:
:
[[NSWorkspace sharedWorkspace] launchApplicationAtURL:app.bundleURL
options:NSWorkspaceLaunchAsync | NSWorkspaceLaunchWithoutAddingToRecents
configuration:@{}
error:NULL];
这大约相当于单击应用程序的 Dock 图标。或者从 Finder 打开应用程序。由于它已经 运行,现有实例将被激活并 sent the reopen application
(kAEReopenApplication
a.k.a. 'rapp'
) Apple event。如果 windows 的所有 windows 都被最小化,则标准行为将取消最小化 window。 (如果它没有打开 windows,它通常会创建一个新的默认 window。在文档编辑器中,这将是一个新的无标题文档。在 Firefox 中,这将是主页。 )
这不会取消最小化 all windows,但无论如何,这通常是不需要的。