zoukankan      html  css  js  c++  java
  • win32

    EnumDisplayDevices枚举适配器

    EnumDisplayMonitors枚举监视器

    #pragma comment(lib, "dxva2.lib")
    #include <windows.h>
    #include <lowlevelmonitorconfigurationapi.h>
    #include <physicalmonitorenumerationapi.h>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string>
    #include <highlevelmonitorconfigurationapi.h>
    #include <vector>
    
    using namespace std;
    
    void D(HANDLE hPhysicalMonitor)
    {
        DWORD cchStringLength = 0;
        BOOL bSuccess = 0;
        LPSTR szCapabilitiesString = NULL;
    
        // Get the length of the string.
        bSuccess = GetCapabilitiesStringLength(
            hPhysicalMonitor, // Handle to the monitor.
            &cchStringLength
        );
        int err = GetLastError();
    
        if (bSuccess)
        {
            // Allocate the string buffer.
            LPSTR szCapabilitiesString = (LPSTR)malloc(cchStringLength);
            if (szCapabilitiesString != NULL)
            {
                // Get the capabilities string.
                bSuccess = CapabilitiesRequestAndCapabilitiesReply(
                    hPhysicalMonitor,
                    szCapabilitiesString,
                    cchStringLength
                );
                cout << szCapabilitiesString << endl;
                // Free the string buffer.
                free(szCapabilitiesString);
            }
        }
    }
    
    static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData)
    {
        cout << "hmonitor:" << hMon << endl;
    
        DWORD cPhysicalMonitors;
        BOOL bSuccess = GetNumberOfPhysicalMonitorsFromHMONITOR(hMon, &cPhysicalMonitors);
        cout << "GetNumber: " << bSuccess << ", number of physical monitors: " << cPhysicalMonitors << endl;
    
        LPPHYSICAL_MONITOR pPhysicalMonitors = (LPPHYSICAL_MONITOR)malloc(cPhysicalMonitors * sizeof(PHYSICAL_MONITOR));
        bSuccess = GetPhysicalMonitorsFromHMONITOR(hMon, cPhysicalMonitors, pPhysicalMonitors);
        cout << "GetPhysicalMonitor: " << bSuccess << endl
            << "Handle: " << pPhysicalMonitors->hPhysicalMonitor << endl
            << "Description: ";
        wcout << (WCHAR*)(pPhysicalMonitors->szPhysicalMonitorDescription) << endl;;
    
        D(pPhysicalMonitors->hPhysicalMonitor);
    
        DestroyPhysicalMonitors(cPhysicalMonitors, pPhysicalMonitors);
        free(pPhysicalMonitors);
    
        cout << "---------------------------------------" << endl;
    
        return TRUE;
    }
    
    void A()
    {
        HWND hWnd = GetDesktopWindow();
        EnumDisplayMonitors(0, 0, MonitorEnum, NULL);
        HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY);
        cout << "---------------------------------------" << endl;
        cout << "Monitor: " << hMonitor << endl;  
    
    }
    
    void B()
    {
        DWORD DispNum = 0;
        DISPLAY_DEVICE DisplayDevice;
        // Initialize DisplayDevice.
        ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
        DisplayDevice.cb = sizeof(DisplayDevice);
    
        while ((EnumDisplayDevices(NULL, DispNum, &DisplayDevice, 0)))
        {
            std::wstring deviceName = DisplayDevice.DeviceName;
            DISPLAY_DEVICE DisplayDeviceM;
            ZeroMemory(&DisplayDeviceM, sizeof(DisplayDeviceM));
            DisplayDeviceM.cb = sizeof(DisplayDeviceM);
            int monitorIndex = 0;
            while (EnumDisplayDevices(deviceName.c_str(), monitorIndex, &DisplayDeviceM, EDD_GET_DEVICE_INTERFACE_NAME))
            {
                std::wstring monitorID = DisplayDeviceM.DeviceID;
                wcout <<"monitorID :"<< monitorID<< endl;
                ++monitorIndex;            
            }
            DispNum++;
        }
        cout << "---------------------------------------" << endl;
    }
    
    int main()
    {
        B();
    
        A();
    
    
    
    
        getchar();
    
        return 0;
    }
  • 相关阅读:
    [Angualr 2] Watch for changes
    [Angular 2] Custom Validtors
    [Angular 2] The form export from NgFormControl
    [Angular 2] Validation
    [Angualr 2] Using FormBuilder
    [Angular 2] ng-control & ng-control-group
    [Angular 2] NgNonBindable
    [Ruby] LEVEL 2 Methods and Classes
    [Rails Level 2] Ground up
    [AngularJS] 5 simple ways to speed up your AngularJS application
  • 原文地址:https://www.cnblogs.com/strive-sun/p/13403996.html
Copyright © 2011-2022 走看看