代码之家  ›  专栏  ›  技术社区  ›  PassionMobile

目标C-以编程方式在MacOS中获取DisplayProductID和DisplayVendorID

  •  1
  • PassionMobile  · 技术社区  · 6 年前

    关于屏幕(Display)的DisplayProductID和DisplayVendorID,我可以从系统信息和终端中的几个命令中获取信息,如下所示;

    显示产品名称与显示产品ID不同,它只是字符串。

    $ defaults read /Library/Preferences/com.apple.windowserver.plist
    {
        DisplayResolutionEnabled = 1;
        DisplaySets =     (
                    (
                            {
                    Active = 1;
                    Depth = 4;
                    DisplayID = 69731456;
                    DisplayProductID = 40978;
                    DisplaySerialNumber = 0;
                    DisplayVendorID = 1552;
                    Height = 1080;
                    IODisplayLocation = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/P0P2@1/IOPCI2PCIBridge/GFX0@0/NVDA,Display-A@0/NVDA";
                    IOFlags = 7;
                    LimitsHeight = 1080;
                    LimitsOriginX = 0;
                    LimitsOriginY = 0;
                    LimitsWidth = 1920;
                    MirrorID = 0;
                    Mirrored = 0;
                    Mode =                 {
                        BitsPerPixel = 32;
                        BitsPerSample = 8;
                        DepthFormat = 4;
                        Height = 1080;
                        IODisplayModeID = "-2147479552";
                        IOFlags = 7;
                        Mode = 1;
                        PixelEncoding = "--------RRRRRRRRGGGGGGGGBBBBBBBB";
                        RefreshRate = 0;
                        SamplesPerPixel = 3;
                        UsableForDesktopGUI = 1;
                        Width = 1920;
                        kCGDisplayBytesPerRow = 7680;
                        kCGDisplayHorizontalResolution = 103;
                        kCGDisplayModeIsInterlaced = 0;
                        kCGDisplayModeIsSafeForHardware = 1;
                        kCGDisplayModeIsStretched = 0;
                        kCGDisplayModeIsTelevisionOutput = 0;
                        kCGDisplayModeIsUnavailable = 0;
                        kCGDisplayModeSuitableForUI = 1;
                        kCGDisplayPixelsHigh = 1080;
                        kCGDisplayPixelsWide = 1920;
                        kCGDisplayResolution = 1;
                        kCGDisplayVerticalResolution = 103;
                    };
                    OriginX = 0;
                    OriginY = 0;
                    PixelEncoding = "--------RRRRRRRRGGGGGGGGBBBBBBBB";
                    Resolution = 1;
                    Unit = 0;
                    UnmirroredHeight = 1080;
                    UnmirroredLimitsHeight = 1080;
                    UnmirroredLimitsOriginX = 0;
                    UnmirroredLimitsOriginY = 0;
                    UnmirroredLimitsWidth = 1920;
                    UnmirroredMode =                 {
                        BitsPerPixel = 32;
                        BitsPerSample = 8;
                        DepthFormat = 4;
                        Height = 1080;
                        IODisplayModeID = "-2147479552";
                        IOFlags = 7;
                        Mode = 1;
                        PixelEncoding = "--------RRRRRRRRGGGGGGGGBBBBBBBB";
                        RefreshRate = 0;
                        SamplesPerPixel = 3;
                        UsableForDesktopGUI = 1;
                        Width = 1920;
                        kCGDisplayBytesPerRow = 7680;
                        kCGDisplayHorizontalResolution = 103;
                        kCGDisplayModeIsInterlaced = 0;
                        kCGDisplayModeIsSafeForHardware = 1;
                        kCGDisplayModeIsStretched = 0;
                        kCGDisplayModeIsTelevisionOutput = 0;
                        kCGDisplayModeIsUnavailable = 0;
                        kCGDisplayModeSuitableForUI = 1;
                        kCGDisplayPixelsHigh = 1080;
                        kCGDisplayPixelsWide = 1920;
                        kCGDisplayResolution = 1;
                        kCGDisplayVerticalResolution = 103;
                    };
                    UnmirroredOriginX = 0;
                    UnmirroredOriginY = 0;
                    UnmirroredResolution = 1;
                    UnmirroredWidth = 1920;
                    Width = 1920;
                }
            )
        );
        ForceOldStyleMemoryManagement = 0;
    }
    

    但我想在MacOS应用程序中以编程方式获取这个DisplayProductID和DisplayVendorID(目标C)。

    如何在Objective-C中读取此plist文件?

    此文件已加密,无法获取数据。请告诉我以编程方式获取DisplayProductID和VendorID的方法。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Brendan Shanks    6 年前

    CGDisplayVendorNumber() CGDisplayModelNumber() 应返回这些值。使用 CGMainDisplayID() 要获取主显示的ID,或者有其他函数来获取显示列表,您可以根据需要进行筛选/迭代。