ええと、私は、デルの電子メールサポートへのこのはい/いいえの簡単な質問を望んでいました。彼らのウェブサイトは、電子メールを送るためだけにサービスコードを必要としました。次に、「テクニカル」チャットサポートを試しました。一部のインド人は奇妙に返答し、最終的に彼/彼女は技術的な知識を持っていないと答えて、(私がすでに試した)電子メールサポートへのリンクを教えてくれました。
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コマンドの小さなサブセットのみをサポートしており、一部には文書化されていないコマンドがあります。多くのメーカーは、以前はDDC/CIに注意を払っていませんでしたが、現在、ほとんどすべてのモニターがbrightnessやコントラスト管理などの一般的なMCCSコマンドをサポートしています。
Wikipedia のDDCページを参照してください。
最新のディスプレイのGUIとコマンドラインコントロールを提供するソフトウェアにリンクしています。
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
他のいくつかのツールも評価しました:
編集: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;
}
明白な方法で使用してください。
DDC/CIをサポートするモニターのファームウェア設定と構成を制御できます。
デルは、EnTech Taiwanによって設計されたDell Display Managerという名前のカスタムブランドのソフトウェアを、モニターで使用するために提供しています。これは主にGUIベースのユーティリティですが、かなり包括的なコマンドライン機能を提供します。現在のバージョンはWindows Vista-Windows 10と互換性があります。他のベンダーのディスプレイでも動作する可能性がありますが、確認されていません。
ソフトウェアの最新バージョンは 公式ウェブサイト から直接ダウンロードできます。
以下の情報は、プログラムのAbout情報とReadme.txtファイルの一部から抜粋して、コマンドライン構文を強調表示しています。
デルディスプレイマネージャ
バージョン1.27.0.1792
Copyright(c)2007-2016、EnTech Taiwan。Dell Inc.にライセンス供与.
ウェブサイト: http://www.entechtaiwan.com
Eメール:[email protected]
リッチで柔軟なコマンド言語がコマンドラインでサポートされており、コマンドライン引数を組み合わせることができます。必要に応じて、コマンドの前にディスプレイ番号を付けることにより、特定のディスプレイをターゲットにできます。例:
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]
-名前付きプロファイルを削除しますSetGridType [X]
-Easy ArrangeグリッドタイプをXに変更しますRescan
-ディスプレイハードウェアを再スキャンしますForceReset
-ディスプレイハードウェアを再接続して再スキャンしますSetControl X Y
-16進制御Xを16進値Yに設定しますIncControl X Y
-コントロールXの値をYずつ増やします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%にします。
私はうまく機能するプログラム「mControl」を使用しています。私のモニターはDell U2312HMです。
mControlは、単一および複数のモニターアレイをインテリジェントなプログラム可能なデバイスに変え、方向を動的に変更し、電力を節約し、カラープロファイルを切り替え、輝度を調整します。これにより、ディスプレイ自体の古くなったボタンを使用して、あいまいなメニューを学習およびナビゲートする必要がなくなります。
このプログラムをダウンロードするには、ページの下半分にある「グラフィックスおよびモニターユーティリティ」セクション http://www.ddc-ci.com/ を見つけて、次の場所にある「mControl」リンクをクリックする必要があります。そのセクションの下部。
this reddit post に触発されたこの自動ホットキースクリプトを使用して、適切な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)
}