アプリケーションを起動し、applescript を使用してファイルを開こうとしています。Apple Script Editorからできました。これは私が書いたスクリプトです:
set AppPath to "<My App Path.app>"
tell application AppPath
if it is running then
activate
else
launch
end if
tell application AppPath to open POSIX file "<My File Path>"
end tell
アプリケーションがバックグラウンドで実行されている場合、起動だけではフォアグラウンド (スクリプト エディターの上) に移動できませんでした。また、アプリケーションが実行されていない場合、アクティブ化はスプラッシュ スクリーンを表示できませんでした。そのため、ボットの起動とアクティブ化を使用しました。
スクリプトは正常に動作しています。しかし、私の C++ プログラムにはスクリプトが必要です。アプリのパスとファイルのパスは実行時に決定されます。だから私はNSAppleScriptとしてスクリプトを生成し、スクリプトを実行していました。生成された NSApplescript は次のようになります。
do shell script "osascript -e 'set AppPath to \"<My App Path.app>\"'
-e 'tell application AppPath' -e 'if it is running then' -e 'activate'
-e 'else' -e 'launch' -e 'endif'
-e 'tell application AppPath to open POSIX file \"<My File Path>\"'"
上記のコードはすべて 1 行にまとめられていますが、読みやすくするために分割しています。というエラーが表示されますvariable e is not defined
。これは実行されていません。
このスクリプトを生成するために使用するコードは次のとおりです。
NSMutableString *script = [NSMutableString stringWithCapacity:512];
[script appendString:@"do shell script \"osascript "];
[script appendString:@"-e 'set AppPath to \\\""];
[script appendString:pathToApp];
[script appendString:@"\\\"'"];
[script appendString:@" -e 'tell application AppPath'"];
[script appendString:@" -e 'if it is running then'"];
[script appendString:@" -e 'activate'"];
[script appendString:@" -e 'else'"];
[script appendString:@" -e 'launch'"];
[script appendString:@" -e 'end if'"];
[script appendString:@" -e 'tell application AppPath to open POSIX file \\\""];
[script appendString:pathToFile];
[script appendString:@"\\\"'"];
[script appendString:@"\"\r"];
user309603 が提案したように、-e の前にスペースを追加しました。今、私は新しいエラーを受け取ります:
エラー "266:266: 構文エラー: 行末などが予想されますが、スクリプトの終わりが見つかりました。(-2741)" 番号 1