サーバーからアプリケーションをダウンロードして実行する MAC 用の NPAPI プラグインがあります。
NSTask を使用してアプリケーションを開くとき。アプリケーションが前面に出ません。
NSBundle *bundle = [NSBundle bundleWithPath:AppPath];
NSString *path = [bundle executablePath];
NSTask *task = [[NSTask alloc] init];
NSArray *arguments;
arguments = [NSArray arrayWithObjects:AppParam,nil];
[task setLaunchPath:path];
[task setArguments:arguments];
[task launch];
私は解決策を検索し、コードを思いついた
int pid = [task processIdentifier];
ProcessSerialNumber psn;
GetProcessForPID(pid, &psn);
SetFrontProcess(&psn);
しかし、このコードではアプリケーションが前面に表示されないため、次のコードを試しました。
NSRunningApplication *runapp = [NSRunningApplication runningApplicationWithProcessIdentifier:pid];
[runapp activateWithOptions:0];
これは、望ましい結果をもたらしませんでした。
いくつかの検索の後、NSWorkspace を使用してアプリケーションを起動およびアクティブ化することを提案する投稿に出くわしました。私はコードを思いついた。
[workspace
launchApplicationAtURL:[bundle bundleURL]
options:NSWorkspaceLaunchNewInstance
configuration:[NSDictionary
dictionaryWithObject:arguments
forKey:NSWorkspaceLaunchConfigurationArguments]
error:error];
これはすべて問題なく機能しますが、1 つの状況では機能しません。アプリケーションがダウンロードされ、NSworkspace コマンドによって最初に実行されると、MAC は「インターネットからダウンロードされたアプリケーションです。本当に開きますか?」というダイアログを表示します。
[OK] を押すと、アプリケーションは起動しますが、前面には表示されません。このダイアログは、アプリケーションが NSWorkspace から起動された場合にのみ表示されます。NSTask で起動すると、MAC は実行前にダイアログを表示しません。
問題を解決する解決策が見つかりませんでした。私は NSWorkspace の確認ダイアログで問題ありませんが、[OK] をクリックした後にアプリケーションを前面に表示する何かを提案できますか?
私も使ってみました。
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
[[NSWorkspace sharedWorkspace] activeApplication];
これについての助けをいただければ幸いです。前もって感謝します。
よろしく、
LazyCoder7.