查找哪个监视器或屏幕包含鼠标指针 - swift, macos
Find which monitor or screen contains mouse pointer - swift, macos
我想知道鼠标在哪个显示器上,这样我就可以在那个显示器上创建一个 window。
这与主屏幕不同,因为 NSScreen.main
returns 哪个屏幕里面有活动的 window(一个简单的方法就是判断哪个显示器的菜单栏是不透明,其他的会稍微变暗)。
据我所知,没有直接的方法来获取它?
在找到答案后回答我自己的问题 - 这可能对其他人有帮助。
找到鼠标在哪个 screen/monitor 上并不难,但您必须遍历每个屏幕才能做到这一点。
Swift 4
func getScreenWithMouse() -> NSScreen? {
let mouseLocation = NSEvent.mouseLocation
let screens = NSScreen.screens
let screenWithMouse = (screens.first { NSMouseInRect(mouseLocation, [=10=].frame, false) })
return screenWithMouse
}
Objective C
在 Objective-C 中获得相同结果的类似方法是:
NSPoint mouseLoc = [NSEvent mouseLocation];
NSEnumerator *screenEnum = [[NSScreen screens] objectEnumerator];
NSScreen screen;
while ((screen = [screenEnum nextObject]) && !NSMouseInRect(mouseLoc,
[screen frame], NO));
我想知道鼠标在哪个显示器上,这样我就可以在那个显示器上创建一个 window。
这与主屏幕不同,因为 NSScreen.main
returns 哪个屏幕里面有活动的 window(一个简单的方法就是判断哪个显示器的菜单栏是不透明,其他的会稍微变暗)。
据我所知,没有直接的方法来获取它?
在找到答案后回答我自己的问题 - 这可能对其他人有帮助。
找到鼠标在哪个 screen/monitor 上并不难,但您必须遍历每个屏幕才能做到这一点。
Swift 4
func getScreenWithMouse() -> NSScreen? {
let mouseLocation = NSEvent.mouseLocation
let screens = NSScreen.screens
let screenWithMouse = (screens.first { NSMouseInRect(mouseLocation, [=10=].frame, false) })
return screenWithMouse
}
Objective C
在 Objective-C 中获得相同结果的类似方法是:
NSPoint mouseLoc = [NSEvent mouseLocation];
NSEnumerator *screenEnum = [[NSScreen screens] objectEnumerator];
NSScreen screen;
while ((screen = [screenEnum nextObject]) && !NSMouseInRect(mouseLoc,
[screen frame], NO));