当我在Mac OS X上使用subprocess.Popen启动应用程序时,它会在后台运行,你必须点击dock中的图标才能将其置于前台。如何使它在前台启动?
我尝试过使用“open”,但那会创建一个不想要的终端窗口。
注意:该应用程序是从使用wxPython编写的GUI应用程序中启动的。
当我在Mac OS X上使用subprocess.Popen启动应用程序时,它会在后台运行,你必须点击dock中的图标才能将其置于前台。如何使它在前台启动?
我尝试过使用“open”,但那会创建一个不想要的终端窗口。
注意:该应用程序是从使用wxPython编写的GUI应用程序中启动的。
from Foundation import *
from Cocoa import *
import objc
pid = 1456
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid)
x.activateWithOptions_(NSApplicationActivateAllWindows)
更新:
以下行更加积极地启动应用程序。
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)
另外,您可能需要首先使用.unhide()
方法将应用程序显示。
x.hide()
x.unhide()
Snies的答案对我有用。然而,由于您只需要NSRunningApplication和NSApplicationActivateIgnoringOtherApps,因此您可能不需要导入其他所有内容。下面的方法对我有效,并且速度更快:
from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps
pid = 1456
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid)
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)