我想要/需要在 macOS 14+ 系统扩展坞左侧或右侧的“空白”区域(当位于底部时)放置一个类似扩展坞的窗口。
获取底座的高度很容易,例如如图所示: 如何获取 Mac OS X Dock 的位置、宽度和高度?可可/碳/C++/Qt
但是获得码头的实际宽度或尺寸,以及码头左右两侧未覆盖的空间似乎是不可能的。
除了暴力、截屏并分析之外,有没有人有任何想法或提示可以查看?
我遵循了我能找到的任何提示,尝试了我能找到的一切。但似乎没有 API 支持(直接或间接)检索 Dock 的大小(高度和宽度)。
您可以使用如下调用 AppleScript 来共同破解解决方案;请预先警告,这确实需要您的应用程序在系统偏好设置中被列入白名单作为辅助功能应用程序,然后才能起作用。
假设 Dock 居中(请参阅下面的注释 1),您需要获取此方法返回的
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];
}
一些注意事项: