3

Mac OS X で subprocess.Popen を使用してアプリを起動すると、バックグラウンドで起動し、ドックのアイコンをクリックして前面に表示する必要があります。フォアグラウンドで開始するにはどうすればよいですか?

「open」を使用してみましたが、不要なターミナル ウィンドウが作成されます。

注: アプリは、wxPython を使用して作成された GUI アプリから開始されています。

4

2 に答える 2

3

ネイティブ API といくつかの Python バインディングを使用する必要があると思います。

NSRunningApplicationとそのメソッドactivateWithOptionsが必要です。これを使用する方法の例を次に示します: Cocoa api を使用してアプリケーションを起動し、前面に表示する方法は?

バインディングについてはPyObjCを参照してください。

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()
于 2012-05-18T15:54:23.110 に答える
2

Sniesの答えは私にとってはうまくいきました。ただし、必要なのは NSRunningApplication と NSApplicationActivateIgnoringOtherApps のみであるため、他のすべてをインポートする必要はありません。以下は私にとってはうまくいき、かなり高速でした:

from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps
pid = 1456 
x = NSRunningApplication.runningApplicationWithProcessIdentifier_(pid)
x.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)
于 2014-08-28T23:16:00.043 に答える