9

Sony ラップトップに Windows Server 2008 をインストールしていますが、輝度コントロールが機能しません。変更できるようにプログラムを書きたいと思います。

現在、私がしなければならないことは、電源コントロール パネルを開き、詳細設定をクリックして、非常に多くの UAC ボックスと戦うことです。

簡単な小さなプログラムでそれを実行したいだけですが、どの API を呼び出すべきかわかりません

4

5 に答える 5

9

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);
}

注: ManagementClassManagementObjectCollection、およびManagementObjectすべて実装IDisposable. リソースのリークを避けるために、" " を呼び出すDispose()か使用する必要があります。using

于 2009-04-28T18:15:40.440 に答える
2

これはビスタのみです:

http://msdn.microsoft.com/en-us/library/ms775232.aspx

SetMonitorBrightness で明るさを設定する前に、GetPhysicalMonitorsFromHMONITOR でモニターを識別する必要があります。.net でこれまで誰もやったことがないと思うので、おそらく独自の相互運用機能を作成する必要があります。API は特に難しくないように見えるので、かなり簡単に実行できるはずです。

于 2008-12-17T00:42:05.810 に答える
1

私の知る限り、このためのマネージ (.NET) API はありません。ただし、Vista の場合、相互運用機能を介して利用できるアンマネージド API があります。MSDN: Monitor Configuration APIおよびWmiSetBrightnessを参照してください。

WmiSetBrightness メソッドをヒットする管理された方法があるかもしれませんが、私はそれらを認識していません。

Vista または Server 2008 を使用していない場合は、不快な世界に直面しています。ソフトウェアの構成は、モニター ドライバーを介して直接行う必要があります。上記の UAC に基づいて、これはあなたには当てはまらないと思いますが、次の人は知りたがるかもしれません. :)

于 2008-12-17T00:43:12.067 に答える
0

DaEagles の回答に追加すると、http: //www.pinvoke.net/サイトは、.Net で win32-apis を使用する場合に命の恩人になる可能性があります。そこに情報が存在しない場合は、.Net の相互運用が成功したときに追加してください。

于 2008-12-17T00:50:05.670 に答える