Dell U2412Mでソフトウェア輝度制御を有効にすることは可能ですか?


13

ええと、デルの電子メールサポートへのこのはい/いいえの簡単な質問が欲しかっただけです。彼らのウェブサイトは、電子メールを送るためだけにサービスコードを必要としました。次に、「テクニカル」チャットサポートを試しました。一部のインド人は奇妙に返答し、最終的に彼/彼女は技術的な知識を持っていないと答え、ちょうど私に電子メールサポートへのリンクを与えました(私はすでに試しました)。

DisplayPortとアップリンクUSBポートを備えたDell U2412Mモニターを持っています。OSDでDDC / CIを有効にしました。Windows 8を使用していますが、チャームバーの輝度コントロールが無効になっています。

それを有効にすることは可能ですか?DDC / CIがあなたのコンピュータがあなたのディスプレイを制御することを可能にすると聞いたからです。

DDC / CI(コマンドインターフェイス)標準は、1998年8月に導入されました。これは、双方向リンクを介してコンピューターがモニターにコマンドを送信し、モニターからセンサーデータを受信する手段を指定します。モニターを制御する特定のコマンドは、1998年9月にリリースされた別のモニター制御コマンドセット(MCCS)標準バージョン1.0で定義されています。DDC/ CIモニターには、モニターのカラーバランスの自動キャリブレーションを可能にする外部カラーセンサーが付属している場合があります。一部の傾斜DDC / CIモニターは自動ピボット機能をサポートしています。モニターの回転センサーは、モニターが縦位置と横位置の間で移動されるときに、オペレーティングシステムがディスプレイを直立に保つことを可能にします。ほとんどのDDC / CIモニターは、MCCSコマンドの小さなサブセットのみをサポートし、一部には文書化されていないコマンドがあります。明るさとコントラストの管理。


Linuxの場合、ddcutil.comを
cwd

回答:



6

Dell U2515HをHDMI経由でnVidiaカードに接続しています。

私はsoftMCCSを試してみましたがうまくいきました。ソフトウェアからバックライトの明るさを調整することができました。

これらはこのモニターが明らかにサポートする制御コードです:

New control value
Restore factory defaults
Restore luminance/contrast defaults
Restore color defaults
Luminance
Contrast
Select color preset
Red video gain
Green video gain
Blue video gain
Active control
Input source
Screen orientation
Horizontal frequency
Vertical frequency
Panel sub-pixel layout
Display technology type
Application enable key
Display controller type
Display firmware level
Power mode
Display application
VCP version
Manufacturer specific - 0xE0
Manufacturer specific - 0xE1
Manufacturer specific - 0xE2
Manufacturer specific - 0xF0
Manufacturer specific - 0xF1
Manufacturer specific - 0xF2
Manufacturer specific - 0xFD

他のいくつかのツールも評価しました:

  • ディマー -バックライトを暗くしません。偽のソフトウェア調光を使用します。
  • ScreenBright-どうやらDDC / CIを使用してバックライトを制御していますが、作成者のWebサイトから削除されました。私はそれらの危険なミラーサイトの1つからそれをダウンロードしようとしたことがありません。
  • Redshift-ディマーのように偽ります。

編集:Windowsの画面の明るさを設定するための使いやすいAPIがあることがわかりました。ここにいくつかのサンプルコードがあります:

Monitor.h

#pragma once

#include <physicalmonitorenumerationapi.h>
#include <highlevelmonitorconfigurationapi.h>

#include <vector>

class Monitor
{
public:
    explicit Monitor(PHYSICAL_MONITOR pm);
    ~Monitor();

    bool brightnessSupported() const;

    int minimumBrightness() const;
    int maximumBrightness() const;
    int currentBrightness() const;

    void setCurrentBrightness(int b);
    // Set brightness from 0.0-1.0
    void setCurrentBrightnessFraction(double fraction);

private:
    bool mBrightnessSupported = false;

    int mMinimumBrightness = 0;
    int mMaximumBrightness = 0;
    int mCurrentBrightness = 0;
    PHYSICAL_MONITOR mPhysicalMonitor;
};

std::vector<Monitor> EnumerateMonitors();

Monitor.cpp

#include "stdafx.h"
#include "Monitor.h"

Monitor::Monitor(PHYSICAL_MONITOR pm) : mPhysicalMonitor(pm)
{
    DWORD dwMonitorCapabilities = 0;
    DWORD dwSupportedColorTemperatures = 0;
    BOOL bSuccess = GetMonitorCapabilities(mPhysicalMonitor.hPhysicalMonitor, &dwMonitorCapabilities, &dwSupportedColorTemperatures);

    if (bSuccess)
    {
        if (dwMonitorCapabilities & MC_CAPS_BRIGHTNESS)
        {
            // Get min and max brightness.
            DWORD dwMinimumBrightness = 0;
            DWORD dwMaximumBrightness = 0;
            DWORD dwCurrentBrightness = 0;
            bSuccess = GetMonitorBrightness(mPhysicalMonitor.hPhysicalMonitor, &dwMinimumBrightness, &dwCurrentBrightness, &dwMaximumBrightness);
            if (bSuccess)
            {
                mBrightnessSupported = true;
                mMinimumBrightness = dwMinimumBrightness;
                mMaximumBrightness = dwMaximumBrightness;
            }
        }
    }
}

Monitor::~Monitor()
{
}

bool Monitor::brightnessSupported() const
{
    return mBrightnessSupported;
}

int Monitor::minimumBrightness() const
{
    return mMinimumBrightness;
}

int Monitor::maximumBrightness() const
{
    return mMaximumBrightness;
}

int Monitor::currentBrightness() const
{
    if (!mBrightnessSupported)
        return -1;

    DWORD dwMinimumBrightness = 0;
    DWORD dwMaximumBrightness = 100;
    DWORD dwCurrentBrightness = 0;
    BOOL bSuccess = GetMonitorBrightness(mPhysicalMonitor.hPhysicalMonitor, &dwMinimumBrightness, &dwCurrentBrightness, &dwMaximumBrightness);
    if (bSuccess)
    {
        return dwCurrentBrightness;
    }
    return -1;
}

void Monitor::setCurrentBrightness(int b)
{
    if (!mBrightnessSupported)
        return;

    SetMonitorBrightness(mPhysicalMonitor.hPhysicalMonitor, b);
}

void Monitor::setCurrentBrightnessFraction(double fraction)
{
    if (!mBrightnessSupported)
        return;
    if (mMinimumBrightness >= mMaximumBrightness)
        return;
    setCurrentBrightness((mMaximumBrightness - mMinimumBrightness) * fraction + mMinimumBrightness);
}


BOOL CALLBACK MonitorEnumCallback(_In_ HMONITOR hMonitor, _In_ HDC hdcMonitor, _In_ LPRECT lprcMonitor, _In_ LPARAM dwData)
{
    std::vector<Monitor>* monitors = reinterpret_cast<std::vector<Monitor>*>(dwData);

    // Get the number of physical monitors.
    DWORD cPhysicalMonitors;
    BOOL bSuccess = GetNumberOfPhysicalMonitorsFromHMONITOR(hMonitor, &cPhysicalMonitors);

    LPPHYSICAL_MONITOR pPhysicalMonitors = NULL;
    if (bSuccess)
    {
        // Allocate the array of PHYSICAL_MONITOR structures.
        LPPHYSICAL_MONITOR pPhysicalMonitors = new PHYSICAL_MONITOR[cPhysicalMonitors];

        if (pPhysicalMonitors != NULL)
        {
            // Get the array.
            bSuccess = GetPhysicalMonitorsFromHMONITOR(hMonitor, cPhysicalMonitors, pPhysicalMonitors);

            // Use the monitor handles.
            for (unsigned int i = 0; i < cPhysicalMonitors; ++i)
            {
                monitors->push_back(Monitor(pPhysicalMonitors[i]));
            }
        }
    }
    // Return true to continue enumeration.
    return TRUE;
}

std::vector<Monitor> EnumerateMonitors()
{
    std::vector<Monitor> monitors;
    EnumDisplayMonitors(NULL, NULL, MonitorEnumCallback, reinterpret_cast<LPARAM>(&monitors));
    return monitors;
}

明白な方法で使用してください。


SoftMCCSを使用してDisplayPort上のPhilips BDM4065UCで動作します。これに本当に満足しています。ありがとう!!!!
Avlin 2017

4

DDC / CIをサポートするモニターのファームウェア設定と構成を制御することが可能です。

デルは、EnTech Taiwanが設計したDell Display Managerという名前のカスタムブランドのソフトウェアを、モニターで使用するために提供しています。これは主にGUIベースのユーティリティですが、かなり包括的なコマンドライン機能を提供します。現在のバージョンはWindows Vista-Windows 10と互換性があります。他のベンダーのディスプレイでも動作する可能性がありますが、確認されていません。

ソフトウェアの最新バージョンは、公式Webサイトから直接ダウンロードできます。


デルディスプレイマネージャ

情報下記プログラムのから抜粋さについての情報や一部のReadme.txtコマンドライン構文を強調したファイル。

Dell Display Manager
バージョン1.27.0.1792
Copyright(c)2007-2016、EnTech Taiwan。

Dell Inc.にライセンス供与

ウェブサイト:http
://www.entechtaiwan.com電子メール:dell.support@entechtaiwan.com

コマンド言語

リッチで柔軟なコマンド言語がコマンドラインでサポートされており、コマンドライン引数を組み合わせることができます。必要に応じて、コマンドの前にディスプレイ番号を付けることにより、特定のディスプレイをターゲットにすることができます2:AutoSetup。ディスプレイ番号が指定されていない場合、コマンドは現在選択されているディスプレイまたはすべてのディスプレイに適宜適用されます。コマンドは次のとおりです。

SetActiveInput [DVI2/HDMI/DP2,etc]-アクティブな入力を切り替えます
RestoreFactoryDefaults-工場出荷時のデフォルトを復元します*
AutoSetup-自動セットアップを実行します(アナログのみ)*
RestoreLevelDefaults-レベルのデフォルトを復元します*
RestoreColorDefaults-色のデフォルトを復元します*
SetBrightnessLevel X-輝度をX%(0-100)に
SetContrastLevel X設定します* -コントラストをX%に設定します(0-100))*
SetNamedPreset [Movie/CAL1,etc]-プリセットモードを変更します*
SetPowerMode [on/off]-ディスプレイ電源モードを設定します*
SetOptimalResolution-最適な解像度に切り替えます
SaveProfile [Name]-設定を名前付きプロファイルに保存します*
RestoreProfile [Name]-名前付きプロファイルから設定を復元します*
DeleteProfile [Name]-名前付きプロファイルを削除します-Easy
SetGridType [X]ArrangeグリッドタイプをXに変更します-
Rescanディスプレイハードウェアを再スキャンします
ForceReset-再接続し、再スキャンディスプレイハードウェア
SetControl X Y-進値Yに設定六角制御Xは、
IncControl X Y- Yによって制御Xの値を増加させます
DecControl X Y-コントロールXの値をY
Wait Xずつ減らします-Xミリ秒の一時停止
Exit-プログラムを終了します

これらのコマンドの一部は、MCCS標準に精通している必要があります。たとえば、それをサポートするモニターでは、OSD言語をスペイン語に切り替えるコマンドは次のようになり SetControl CC 0Aます。誤ってロックされたOSDをロック解除するSetControl CA 02

手順はコマンドラインで組み合わせることができ、オプションのホットキーを使用して標準のWindowsショートカットに割り当てることができます。例えば:

ddm.exe /RestoreLevelDefaults /2:SetContrastLevel 70

最初にすべてのモニターのレベルをデフォルトに戻し、次にモニター#2のコントラストレベルを70%に設定します。

:特定のモニターを対象としない場合、アスタリスク(*)のタグが付いた上記のコマンドはすべてのモニターに適用され、マルチモニターマトリックスのすべてのメンバーを簡単かつ均一に制御できます。たとえば、16台の同一モニターのマトリックスで実行した場合、コマンドラインは次のようになります。

ddm.exe /SetNamedPreset Warm /SetBrightnessLevel 75

16台すべてのモニターを75%の輝度レベルでウォームプリセットモードに設定します。


コントラストを25%より低くすることはできません
Nakilon

1

私はうまく機能するプログラム「mControl」を使用しています。私のモニターはDell U2312HMです。

mControlは、単一および複数のモニターアレイをインテリジェントなプログラム可能なデバイスに変え、方向を動的に変更し、電力を節約し、カラープロファイルを切り替え、輝度を調整します。これにより、ディスプレイ自体の古風なボタンを使用して、あいまいなメニューを学習およびナビゲートする必要がなくなります。

このプログラムをダウンロードするには、http: //www.ddc-ci.com/ ページの下半分にある「グラフィックスおよびモニターユーティリティ」セクションを見つけ、そのセクションの下にある「mControl」リンクをクリックする必要があります。


0

私はこのreddit投稿に触発されたこのautohotkeyスクリプトを使用して、適切なMCCSコマンドを送信します。Win10のDell U2718Qの魅力のように機能します。

^!-::
    changeMonitorBrightness(-10)
return

^!=::
    changeMonitorBrightness(10)

getMonitorHandle()
{
  MouseGetPos, xpos, ypos
  point := ( ( xpos ) & 0xFFFFFFFF ) | ( ( ypos ) << 32 )
  ; Initialize Monitor handle
  hMon := DllCall("MonitorFromPoint"
    , "int64", point ; point on monitor
    , "uint", 1) ; flag to return primary monitor on failure

  ; Get Physical Monitor from handle
  VarSetCapacity(Physical_Monitor, 8 + 256, 0)

  DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR"
    , "int", hMon   ; monitor handle
    , "uint", 1   ; monitor array size
    , "int", &Physical_Monitor)   ; point to array with monitor

  return hPhysMon := NumGet(Physical_Monitor)
}

destroyMonitorHandle(handle)
{
  DllCall("dxva2\DestroyPhysicalMonitor", "int", handle)
}


changeMonitorBrightness(delta)
{
  vcpLuminance := 0x10

  handle := getMonitorHandle()

  DllCall("dxva2\GetVCPFeatureAndVCPFeatureReply"
    , "int", handle
    , "char", vcpLuminance
    , "Ptr", 0
    , "uint*", luminance
    , "uint*", maximumValue)

  luminance += delta

  if (luminance > 100) 
  {
  luminance := 100
  }
  else if (luminance < 0)
  {
  luminance := 0
  }

  DllCall("dxva2\SetVCPFeature"
    , "int", handle
    , "char", vcpLuminance
    , "uint", luminance)
  destroyMonitorHandle(handle)
} 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.