Fat*_*tso 5 macos cocoa macos-carbon
如果你像这样调用TransformProcessType():
ProcessSerialNumber psn = { 0, kCurrentProcess };
(void) TransformProcessType(&psn, kProcessTransformToForegroundApplication);
Run Code Online (Sandbox Code Playgroud)
然后cocoa应用程序菜单不显示,除非你在应用程序中尽早调用它(例如在applicationWillFinishLaunching中).
我向Apple寻求帮助,他们帮助我很好.Quote:
调用TransformProcessType时未显示菜单栏的原因是您的应用程序已经是活动应用程序(即[[NSRunningApplication currentApplication] isActive]返回YES)并且应用程序的菜单栏会在应用程序显示时显示活性
这是他们的解决方法:
- (void)transformStep1 {
for (NSRunningApplication * app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.finder"]) {
[app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
break;
}
[self performSelector:@selector(transformStep2) withObject:nil afterDelay:0.1];
}
- (void)transformStep2
{
ProcessSerialNumber psn = { 0, kCurrentProcess };
(void) TransformProcessType(&psn, kProcessTransformToForegroundApplication);
[self performSelector:@selector(transformStep3) withObject:nil afterDelay:0.1];
}
- (void)transformStep3
{
[[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2437 次 |
| 最近记录: |