zoukankan      html  css  js  c++  java
  • 获取显示器连接方式

    typedef enum _D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY { 
      D3DKMDT_VOT_UNINITIALIZED         = -2,
      D3DKMDT_VOT_OTHER                 = -1,
      D3DKMDT_VOT_HD15                  = 0,
      D3DKMDT_VOT_SVIDEO                = 1,
      D3DKMDT_VOT_COMPOSITE_VIDEO       = 2,
      D3DKMDT_VOT_COMPONENT_VIDEO       = 3,
      D3DKMDT_VOT_DVI                   = 4,
      D3DKMDT_VOT_HDMI                  = 5,
      D3DKMDT_VOT_LVDS                  = 6,
      D3DKMDT_VOT_D_JPN                 = 8,
      D3DKMDT_VOT_SDI                   = 9,
      D3DKMDT_VOT_DISPLAYPORT_EXTERNAL  = 10,
      D3DKMDT_VOT_DISPLAYPORT_EMBEDDED  = 11,
      D3DKMDT_VOT_UDI_EXTERNAL          = 12,
      D3DKMDT_VOT_UDI_EMBEDDED          = 13,
      D3DKMDT_VOT_SDTVDONGLE            = 14,
    #if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_M1)
      D3DKMDT_VOT_MIRACAST              = 15,
    #endif 
      D3DKMDT_VOT_INTERNAL              = 0x80000000,
      D3DKMDT_VOT_SVIDEO_4PIN           = D3DKMDT_VOT_SVIDEO,
      D3DKMDT_VOT_SVIDEO_7PIN           = D3DKMDT_VOT_SVIDEO,
      D3DKMDT_VOT_RF                    = D3DKMDT_VOT_COMPOSITE_VIDEO,
      D3DKMDT_VOT_RCA_3COMPONENT        = D3DKMDT_VOT_COMPONENT_VIDEO,
      D3DKMDT_VOT_BNC                   = D3DKMDT_VOT_COMPONENT_VIDEO
    } D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY;


    D3DKMDT_VOT_UNINITIALIZED

    Indicates that a variable of type D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY has not yet been assigned a meaningful value.

    D3DKMDT_VOT_OTHER

    Indicates that the video output device connects to an external display device through a connector that is not one of the types that is indicated by the following values in this enumeration.

    D3DKMDT_VOT_HD15

    Indicates that the video output device connects to an external display device through an HD15 (VGA) connector.

    D3DKMDT_VOT_SVIDEO

    Indicates that the video output device connects to an external display device through an S-video connector.

    D3DKMDT_VOT_COMPOSITE_VIDEO

    Indicates that the video output device connects to an external display device through composite video connectors.

    D3DKMDT_VOT_COMPONENT_VIDEO

    Indicates that the video output device connects to an external display device through component video connectors.

    D3DKMDT_VOT_DVI

    Indicates that the video output device connects to an external display device through a Digital Video Interface (DVI) connector.

    D3DKMDT_VOT_HDMI

    Indicates that the video output device connects to an external display device through an High-Definition Multimedia Interface (HDMI) connector.

    D3DKMDT_VOT_LVDS

    Indicates that the video output device connects to an external display device through an Low Voltage Differential Swing (LVDS) or Mobile Industry Processor Interface (MIPI) Digital Serial Interface (DSI) connector.

    D3DKMDT_VOT_D_JPN

    Indicates that the video output device connects to an external display device through a D-Jpn connector.

    D3DKMDT_VOT_SDI

    Indicates that the video output device connects to an external display device through an SDI connector.

    D3DKMDT_VOT_DISPLAYPORT_EXTERNAL

    Indicates that the connector type is an external display port.

    D3DKMDT_VOT_DISPLAYPORT_EMBEDDED

    Indicates that the connector type is an embedded display port.

    D3DKMDT_VOT_UDI_EXTERNAL

    Indicates that the connector type is an external Unified Display Interface (UDI).

    D3DKMDT_VOT_UDI_EMBEDDED

    Indicates that the connector type is an embedded UDI.

    D3DKMDT_VOT_SDTVDONGLE

    Indicates that the video output device connects to an external display device through a dongle cable that supports SDTV.

    D3DKMDT_VOT_MIRACAST

    Indicates that the video output device connects to an external display device wirelessly through a Miracast connected session. For more info, see Wireless displays (Miracast).

    Supported starting with Windows 8.1.

    D3DKMDT_VOT_INTERNAL

    Indicates that the video output device connects internally to a display device (for example, the internal connection in a laptop computer).

    This constant value is not a bit-field value. Instead, it's a standalone video output type.

    D3DKMDT_VOT_SVIDEO_4PIN

    Indicates that the video output device connects to an external display device through a 4-pin S-video connector.

    D3DKMDT_VOT_SVIDEO_7PIN

    Indicates that the video output device connects to an external display device through a 7-pin S-video connector.

    D3DKMDT_VOT_RF

    Indicates that the video output device connects to an external display device through an RF connector.

    D3DKMDT_VOT_RCA_3COMPONENT

    Indicates that the video output device connects to an external display device through a set of three RCA connectors.

    D3DKMDT_VOT_BNC

    Indicates that the video output device connects to an external display device through a BNC connector.

      1 #include "stdafx.h"
      2 #define _WIN32_DCOM
      3 #include <iostream>
      4 using namespace std;
      5 #include <comdef.h>
      6 #include <Wbemidl.h>
      7 # pragma comment(lib, "wbemuuid.lib")
      8 
      9 
     10 // Monitor's basic connection parameters
     11 
     12 #pragma argsused
     13 int main(int argc, char* argv[])
     14 {
     15     BSTR strNetworkResource;
     16     //To use a WMI remote connection set localconn to false and configure the values of the pszName, pszPwd and the name of the remote machine in strNetworkResource
     17     strNetworkResource = L"\\.\root\WMI";
     18 
     19     COAUTHIDENTITY *userAcct =  NULL ;
     20     COAUTHIDENTITY authIdent;
     21 
     22     // Initialize COM. ------------------------------------------
     23 
     24     HRESULT hres;
     25     hres =  CoInitializeEx(0, COINIT_MULTITHREADED);
     26     if (FAILED(hres))
     27     {
     28         cout << "Failed to initialize COM library. Error code = 0x" << hex << hres << endl;
     29         cout << _com_error(hres).ErrorMessage() << endl;
     30         cout << "press enter to exit" << endl;
     31         cin.get();      
     32         return 1;                  // Program has failed.
     33     }
     34 
     35     // Set general COM security levels --------------------------
     36 
     37         hres =  CoInitializeSecurity(
     38             NULL,
     39             -1,                          // COM authentication
     40             NULL,                        // Authentication services
     41             NULL,                        // Reserved
     42             RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
     43             RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
     44             NULL,                        // Authentication info
     45             EOAC_NONE,                   // Additional capabilities
     46             NULL                         // Reserved
     47             );
     48 
     49     if (FAILED(hres))
     50     {
     51         cout << "Failed to initialize security. Error code = 0x" << hex << hres << endl;
     52         cout << _com_error(hres).ErrorMessage() << endl;
     53         CoUninitialize();
     54         cout << "press enter to exit" << endl;
     55         cin.get();      
     56         return 1;                    // Program has failed.
     57     }
     58 
     59     // Obtain the initial locator to WMI -------------------------
     60 
     61     IWbemLocator *pLoc = NULL;
     62     hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc);
     63 
     64     if (FAILED(hres))
     65     {
     66         cout << "Failed to create IWbemLocator object." << " Err code = 0x" << hex << hres << endl;
     67         cout << _com_error(hres).ErrorMessage() << endl;
     68         CoUninitialize();       
     69         cout << "press enter to exit" << endl;
     70         cin.get();      
     71         return 1;                 // Program has failed.
     72     }
     73 
     74     // Connect to WMI through the IWbemLocator::ConnectServer method
     75 
     76     IWbemServices *pSvc = NULL;
     77 
     78         hres = pLoc->ConnectServer(
     79              _bstr_t(strNetworkResource),      // Object path of WMI namespace
     80              NULL,                    // User name. NULL = current user
     81              NULL,                    // User password. NULL = current
     82              0,                       // Locale. NULL indicates current
     83              NULL,                    // Security flags.
     84              0,                       // Authority (e.g. Kerberos)
     85              0,                       // Context object
     86              &pSvc                    // pointer to IWbemServices proxy
     87              );
     88 
     89     if (FAILED(hres))
     90     {
     91         cout << "Could not connect. Error code = 0x" << hex << hres << endl;    
     92         cout << _com_error(hres).ErrorMessage() << endl;
     93         pLoc->Release();
     94         CoUninitialize();
     95         cout << "press enter to exit" << endl;
     96         cin.get();          
     97         return 1;                // Program has failed.
     98     }
     99 
    100     cout << "Connected to root\WMI WMI namespace" << endl;
    101 
    102     // Set security levels on the proxy -------------------------
    103         hres = CoSetProxyBlanket(
    104            pSvc,                        // Indicates the proxy to set
    105            RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
    106            RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
    107            NULL,                        // Server principal name
    108            RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx
    109            RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
    110            NULL,                        // client identity
    111            EOAC_NONE                    // proxy capabilities
    112         );
    113 
    114     if (FAILED(hres))
    115     {
    116         cout << "Could not set proxy blanket. Error code = 0x" << hex << hres << endl;
    117         cout << _com_error(hres).ErrorMessage() << endl;
    118         pSvc->Release();
    119         pLoc->Release();
    120         CoUninitialize();
    121         cout << "press enter to exit" << endl;
    122         cin.get();      
    123         return 1;               // Program has failed.
    124     }
    125 
    126     // Use the IWbemServices pointer to make requests of WMI ----
    127 
    128     IEnumWbemClassObject* pEnumerator = NULL;
    129     hres = pSvc->ExecQuery( L"WQL", L"SELECT * FROM WmiMonitorConnectionParams",
    130     WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);
    131 
    132     if (FAILED(hres))
    133     {
    134         cout << "ExecQuery failed" << " Error code = 0x"    << hex << hres << endl;
    135         cout << _com_error(hres).ErrorMessage() << endl;
    136         pSvc->Release();
    137         pLoc->Release();
    138         CoUninitialize();
    139         cout << "press enter to exit" << endl;
    140         cin.get();      
    141         return 1;               // Program has failed.
    142     }
    143 
    144 
    145     // Get the data from the WQL sentence
    146     IWbemClassObject *pclsObj = NULL;
    147     ULONG uReturn = 0;
    148 
    149     while (pEnumerator)
    150     {
    151         HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);
    152 
    153         if(0 == uReturn || FAILED(hr))
    154           break;
    155 
    156         VARIANT vtProp;
    157 
    158                 hr = pclsObj->Get(L"Active", 0, &vtProp, 0, 0);// Boolean
    159                 if (!FAILED(hr))
    160                 {
    161                   if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
    162                     wcout << "Active : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
    163                   else
    164                     wcout << "Active : " << (vtProp.boolVal ? "True" : "False") << endl;
    165                 }
    166                 VariantClear(&vtProp);
    167 
    168                 hr = pclsObj->Get(L"InstanceName", 0, &vtProp, 0, 0);// String
    169                 if (!FAILED(hr))
    170                 {
    171                   if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
    172                     wcout << "InstanceName : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
    173                   else
    174                     wcout << "InstanceName : " << vtProp.bstrVal << endl;
    175                 }
    176                 VariantClear(&vtProp);
    177 
    178                 hr = pclsObj->Get(L"VideoOutputTechnology", 0, &vtProp, 0, 0);// Uint32
    179                 if (!FAILED(hr))
    180                 {
    181                   if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
    182                     wcout << "VideoOutputTechnology : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
    183                   else
    184                     wcout << "VideoOutputTechnology : " << vtProp.uintVal << endl;
    185                 }
    186                 VariantClear(&vtProp);
    187 
    188 
    189         pclsObj->Release();
    190         pclsObj=NULL;
    191     }
    192 
    193     // Cleanup
    194 
    195     pSvc->Release();
    196     pLoc->Release();
    197     pEnumerator->Release();
    198     if (pclsObj!=NULL)
    199      pclsObj->Release();
    200 
    201     CoUninitialize();
    202     cout << "press enter to exit" << endl;
    203     cin.get();
    204     return 0;   // Program successfully completed.
    205 }
    View Code
  • 相关阅读:
    显示非模式窗口和模式窗口
    delphi 版本号
    数字证书和签名
    DLL知道自己的位置
    拖动处理
    驱动配置相关
    python sturct模块操作C数据
    Lambda学习笔记
    【转】update select
    [转]视频格式分类
  • 原文地址:https://www.cnblogs.com/nightnine/p/7260348.html
Copyright © 2011-2022 走看看