我想要/需要在 MacOS 14+ 系统 Dock(位于底部)左侧或右侧的“空白”区域中放置一个类似 Dock 的窗口。
获取 Dock 的高度很容易,例如如图所示: 如何获取 Mac OS X Dock 的位置、宽度和高度?可可/碳/C++/Qt
但是获取码头的实际宽度或尺寸,以及码头左右两侧未覆盖的空间似乎是不可能的。
有人有什么想法或提示去哪里看吗? ...除了 - 暴力 - 截屏并分析它。
我遵循了我能找到的任何提示,尝试了我能找到的一切。但似乎没有 API 支持(直接或间接)检索 Dock 的大小(高度和宽度)。
您可以使用如下调用 AppleScript 来共同破解解决方案;请预先警告,这确实需要您的应用程序在系统偏好设置中作为辅助功能应用程序列入白名单,然后才能完全运行。
考虑到 Dock 始终居中,您需要获取此方法返回的int
值,并从屏幕本身的全宽度 中减去它;计算结果减半,应对应于 Dock 两侧的空间量。
- (int) getDockWidth {
// Define AppleScript source code to execute
NSString *appleScriptSource = @""
"tell application \"System Events\" to tell application process \"Dock\" to set dockSize to the size of list 1\r"
"return dockSize";
// Create landing zone for the error dictionary that NSAppleScript can dump error information to
NSDictionary *errorDict = NULL;
NSAppleScript *appleScript = [[NSAppleScript alloc] initWithSource:appleScriptSource];
NSAppleEventDescriptor *eventDescriptor = [appleScript executeAndReturnError:&errorDict];
if (errorDict != NULL) {
[NSException exceptionWithName:@"Error executing AppleScript" reason:nil userInfo:errorDict];
}
return [[eventDescriptor descriptorAtIndex:1] int32Value];
}
一些注意事项: