可能有不同的方法,其中一种是通过枚举正在运行的应用程序,另一种是枚举应用程序内部的窗口。
我将在这里展示应用程序方法
from AppKit import NSApplication, NSApp, NSWorkspace
from Quartz import kCGWindowListOptionOnScreenOnly, kCGNullWindowID, CGWindowListCopyWindowInfo
workspace = NSWorkspace.sharedWorkspace()
activeApps = workspace.runningApplications()
for app in activeApps:
if app.isActive():
options = kCGWindowListOptionOnScreenOnly
windowList = CGWindowListCopyWindowInfo(options,
kCGNullWindowID)
for window in windowList:
if window['kCGWindowOwnerName'] == app.localizedName():
print(window.getKeys_)
break
break
Run Code Online (Sandbox Code Playgroud)
这将找到当前关注的应用程序,您可以根据标题或您想要的任何内容更改逻辑
之后,app被发现。您可以使用
app.hide()
Run Code Online (Sandbox Code Playgroud)
您可以使用再次显示该应用
from Cocoa import NSApplicationActivateIgnoringOtherApps, NSApplicationActivateAllWindows
app.unhide()
app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)
# or
app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps | NSApplicationActivateAllWindows)
Run Code Online (Sandbox Code Playgroud)
我不得不参考很多线程才能获得此解决方案
如何从Swift中的CGWindowID获取窗口引用(CGWindow,NSWindow或WindowRef)?
安装Quartz模块时出现“没有这样的文件:'requirements.txt'错误”
在没有Accessibility API的情况下,如何在Mac OS中获取另一个应用程序窗口的标题,位置和大小?
-[NSRunningApplication activateWithOptions:]不起作用
如何使用Python在Mac OS X上的前台启动应用程序?
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |