Цель C - получить DisplayProductID и DisplayVendorID в MacOS программным способом
Относительно DisplayProductID и DisplayVendorID экрана (Display), я могу получить информацию из информации о системе и нескольких команд в терминале, как это;
Отображение названия продукта отличается от DisplayProductID, это просто строка.
$ 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;
}
Но я хочу получить эти DisplayProductID и DisplayVendorID в приложении MacOS программно (цель C).
Как я могу прочитать этот файл plist в Objective-C?
Этот файл зашифрован, не может получить данные. Пожалуйста, дайте мне знать, как получить DisplayProductID и VendorID программно.
1 ответ
CGDisplayVendorNumber()
а также CGDisplayModelNumber()
должен вернуть эти значения. использование CGMainDisplayID()
чтобы получить идентификатор для основного дисплея, или есть другие функции для получения списка дисплеев, которые можно отфильтровать / перебрать при необходимости.