在Firemonkey 11.1中,我有两名员工使用MacOS.

第一个

  • Mac OS Catalina带笔记本电脑1280x800
  • 外部显示器1920x1080

第二个

  • Mac OS Monterey带笔记本电脑1440x900
  • 外部显示器1920x1080

Workstation

在第一个屏幕上,我可以拍摄笔记本电脑屏幕的截图,但不能拍摄外部显示屏.而在第二种情况下,情况正好相反.

我拍摄了这样的截图,并try 了一些解决方法:

LImage := CGDisplayCreateImageForRect(FID, RectToCGTrect(ACaptureRect));

if not Assigned(LImage) then
  LImage := CGDisplayCreateImage(FID);

if not Assigned(LImage) then 
begin
  LBounds := CGDisplayBounds(FID);
  LImage := CGDisplayCreateImageForRect(FID, LBounds);
end;

if not Assigned(LImage) then 
begin
  LBounds := CGDisplayBounds(FID);
  LBounds.origin.x := 0;
  LBounds.origin.y := 0;

  LImage := CGDisplayCreateImageForRect(FID, LBounds);
end;

On first workstation :

第一屏

  • FID = 0
  • ACaptureRect = 0, 0, 1280, 800
  • CGDisplayCreateImageForRect张的截图还行

第二屏

  • FID = 1
  • ACaptureRect = 1280, 0, 1920, 1080
  • CGDisplayCreateImageForRect次失败
  • CGDisplayCreateImage(1)次失败
  • CGDisplayBounds返回0,0,0,0失败
  • CGDisplayBounds#2也失败了

全桌面(屏幕1+2)

On second workstation :

第一屏

  • FID = 0
  • ACaptureRect = 0, 0, 1440, 900
  • CGDisplayCreateImageForRect次失败
  • CGDisplayCreateImage(0)次失败
  • CGDisplayBounds未能返回0、0、1440, 900
  • CGDisplayBounds#2也失败了 0, 0, 1440, 900

第二屏

  • FID = 1
  • ACaptureRect = 1440, 0, 1920, 1080
  • CGDisplayCreateImageForRect张的截图还行

全桌面(屏幕1+2)

第一台 workstation 上只有笔记本电脑屏幕工作,第二台笔记本电脑上只有外部显示器工作,这是不符合逻辑的.

两者都在同一屏幕上打开了应用程序(在笔记本电脑上)

不同的是,在第二台笔记本电脑(蒙特利)上,即使我不能使用笔记本电脑屏幕,CGDisplayBounds也会返回正确的大小.

我不知道该怎么做

编辑:在第二台 workstation 的同一台笔记本电脑上,但在BigSur版本(不是Monterey)中,一切都很好!太疯狂了

推荐答案

@ptitBoss:你的FID很简单,但不是很好,你用错误的方式检索它.使用CGGetOnlineDisplayListCGGetActiveDisplayList等功能.

Objective-c相关问答推荐

目标 C:什么是(id)发件人?

如何以编程方式获取iphone的IP地址

iOS8:退出应用程序后不久出现蓝条正在使用您的位置

如何从 C 方法调用 Objective-C 方法?

检测 NSString 的语言

是否可以将 NSInteger 转换为 NSNumber?

如何将 UISlider 垂直放置?

如何使用整数值作为键在 NSMutableDictionary 中设置值?

iOS 中 textField 上的Electron邮件验证

如何在 XCode 中复制文件?

属性与实例变量

Xcode 在您的 keys 串中找不到此配置文件的有效私有证书/有效密钥对

使用 NSLog 打印 NSData

iOS Buttons - 添加边框

NSHTTPCookieStorage 状态未在应用退出时保存.那里有任何明确的知识/文档吗?

如何减小使用 UIImagePickerController 创建的视频的文件大小?

获取当前调度队列?

字符串常量和字符串文字有什么区别?

如何让 UITextView 检测网站、邮件和电话号码的链接

更改导航栏的字体