Sony ラップトップに Windows Server 2008 をインストールしていますが、輝度コントロールが機能しません。変更できるようにプログラムを書きたいと思います。
現在、私がしなければならないことは、電源コントロール パネルを開き、詳細設定をクリックして、非常に多くの UAC ボックスと戦うことです。
簡単な小さなプログラムでそれを実行したいだけですが、どの API を呼び出すべきかわかりません
Sony ラップトップに Windows Server 2008 をインストールしていますが、輝度コントロールが機能しません。変更できるようにプログラムを書きたいと思います。
現在、私がしなければならないことは、電源コントロール パネルを開き、詳細設定をクリックして、非常に多くの UAC ボックスと戦うことです。
簡単な小さなプログラムでそれを実行したいだけですが、どの API を呼び出すべきかわかりません
MSDN でJohn RudyのWmiSetBrightnessへのリンクを調べたところ、次のようになりました。
ManagementClass mclass = new ManagementClass("WmiMonitorBrightnessMethods");
mclass.Scope = new ManagementScope(@"\\.\root\wmi");
ManagementObjectCollection instances = mclass.GetInstances();
// I assume you get one instance per monitor
foreach(ManagementObject instance in instances)
{
ulong timeout = 1; // in seconds
ushort brightness = 50; // in percent
object[] args = new object[] { timeout, brightness };
instance.InvokeMethod("WmiSetBrightness", args);
}
注: ManagementClass
、ManagementObjectCollection
、およびManagementObject
すべて実装IDisposable
. リソースのリークを避けるために、" " を呼び出すDispose()
か使用する必要があります。using
これはビスタのみです:
http://msdn.microsoft.com/en-us/library/ms775232.aspx
SetMonitorBrightness で明るさを設定する前に、GetPhysicalMonitorsFromHMONITOR でモニターを識別する必要があります。.net でこれまで誰もやったことがないと思うので、おそらく独自の相互運用機能を作成する必要があります。API は特に難しくないように見えるので、かなり簡単に実行できるはずです。
私の知る限り、このためのマネージ (.NET) API はありません。ただし、Vista の場合、相互運用機能を介して利用できるアンマネージド API があります。MSDN: Monitor Configuration APIおよびWmiSetBrightnessを参照してください。
WmiSetBrightness メソッドをヒットする管理された方法があるかもしれませんが、私はそれらを認識していません。
Vista または Server 2008 を使用していない場合は、不快な世界に直面しています。ソフトウェアの構成は、モニター ドライバーを介して直接行う必要があります。上記の UAC に基づいて、これはあなたには当てはまらないと思いますが、次の人は知りたがるかもしれません. :)
DaEagles の回答に追加すると、http: //www.pinvoke.net/サイトは、.Net で win32-apis を使用する場合に命の恩人になる可能性があります。そこに情報が存在しない場合は、.Net の相互運用が成功したときに追加してください。