如果检查了停靠栏图标,我如何设置复选框? 我已经设置了一个复选框切换菜单栏项目,但是如何使用停靠栏图标? 寻找一些代码来做到这一点。 谢谢!
答案 0 :(得分:12)
上面已经介绍了Swift的更新,使用了两种方式(它们给出了相同的结果):
public class func toggleDockIcon_Way1(showIcon state: Bool) -> Bool {
// Get transform state.
var transformState: ProcessApplicationTransformState
if state {
transformState = ProcessApplicationTransformState(kProcessTransformToForegroundApplication)
}
else {
transformState = ProcessApplicationTransformState(kProcessTransformToUIElementApplication)
}
// Show / hide dock icon.
var psn = ProcessSerialNumber(highLongOfPSN: 0, lowLongOfPSN: UInt32(kCurrentProcess))
let transformStatus: OSStatus = TransformProcessType(&psn, transformState)
return transformStatus == 0
}
public class func toggleDockIcon_Way2(showIcon state: Bool) -> Bool {
var result: Bool
if state {
result = NSApp.setActivationPolicy(NSApplicationActivationPolicy.Regular)
}
else {
result = NSApp.setActivationPolicy(NSApplicationActivationPolicy.Accessory)
}
return result
}
答案 1 :(得分:9)
我使用此代码:
BOOL iconInDock = [[NSUserDefaults standardUserDefaults] boolForKey:smHideShowIcon];
if (iconInDock) {
ProcessSerialNumber psn = { 0, kCurrentProcess };
// display dock icon
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
}
好吧,如果我在Info.plist中设置LSUIElement = 1,它对我的应用程序起作用。该代码仅适用于 show ,但我如何隐藏图标?
答案 2 :(得分:4)
(将此作为答案发布,因为评论没有代码格式化)
QSBApplicationDelegate.m:223-228
BOOL iconInDock = [[NSUserDefaults standardUserDefaults] boolForKey:kQSBIconInDockKey];
if (iconInDock) {
ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
}
答案 3 :(得分:2)
您可能希望将应用程序设置为LSUIElement,然后使用TransformProcessType启用Dock图标。该应用程序需要重新启动才能使更改生效。有关示例,请参阅Google Quick Search Box项目。
答案 4 :(得分:0)
将您的应用程序设置为LSUIElement,然后调用:
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
发布时。
这也适用于MAS。