ラップトップ (.NET) の明るさを変更するにはどの API 呼び出しを使用すればよいですか?

StackOverflow https://stackoverflow.com/questions/373297

  •  22-08-2019
  •  | 
  •  

質問

Sony ラップトップに Windows Server 2008 がインストールされていますが、明るさの制御が機能しません。それを変更できるプログラムを書きたいと思います。

現在私がしなければならないことは、電源コントロール パネルを開いて詳細設定をクリックし、私を見ている人が私が完全に頭がおかしいと思うに違いないほど多くの UAC ボックスを処理することです。

それを行うための単純な小さなプログラムが必要ですが、どの API を呼び出せばよいかわかりません

役に立ちましたか?

解決

私は見上げた ジョン・ルディのリンク先 WmiSet明るさ MSDN でこれを思いつきました:

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 を参照してください。 モニター構成 API そして WmiSet明るさ.

WmiSetBrightness メソッドを実行する管理された方法があるかもしれませんが、私は知りません。

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

ここで

ただ、brainstormer ...ラップトップ上で、あなたがキーボードの上にいくつかの重要-kombinationsを使用して明るさを変更することができます。あなただけの特定の値に設定する必要があり、それは暗く/軽くないようにしたい場合には、それらのkeyspressesを送信することが可能です。

DaEaglesの答えに追加するには、 http://www.pinvoke.net/ のサイトには、することができ命の恩人は、.NETでのWin32 APIで作業する場合。情報が存在しない場合は、.NETのために成功し、相互運用を行った際に、それを追加してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top