MacOSには、コマンドラインから指定されたURLでSafariを開く方法がいくつかあることを知っています。
open -a Safari http://stackoverflow.com
またはAppleScriptとして
tell application "Safari" to open location "http://stackoverflow.com/"
しかし、私がプロセスを開始している場合、例えばプログラム的には、open/applescriptプロセス(Safariの起動直後に終了する)へのハンドルのみを取得します。
指定されたURLでSafariを起動し、Safariプロセスへのハンドルを取得するにはどうすればよいですか(Safari実行可能ファイルにコマンドライン引数としてURLを渡すことができない理由はまだ私を超えています)?
appleScriptで、URLでSafariを開いた後
tell application "Safari" to open location "http://stackoverflow.com/"
次の方法でプロセスオブジェクトを取得できます。
tell application "System Events" to set proc to application process "Safari"
procオブジェクトには、pid、バンドルIDなどが添付されます。
また、Safari 5+は マルチプロセスアーキテクチャ :マスタープロセスといくつかのレンダリングプロセスで実行されることに注意してください。上記のコードでは、マスタープロセスのみが取得されます。レンダリングプロセスに簡単にアクセスすることはできません。また、個々のレンダリングプロセスを制御することもあまり意味がありません。