私はインターネットを検索し、C#コードからデバイスの明るさを変更する方法を見つけました。次のようになります。Windows CE 6.0のバックライト輝度コントロール
[DllImport("coredll.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool EventModify(IntPtr hEvent, [In, MarshalAs(UnmanagedType.U4)] int dEvent);
[DllImport("coredll.Dll")]
private static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);
[DllImport("coredll.Dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool CloseHandle(IntPtr hObject);
private static bool SetEvent(IntPtr hEvent)
{
return EventModify(hEvent, (int)EventFlags.SET);
}
private void SetBacklightValue(string name, int v)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"ControlPanel\Backlight", true);
if (key != null)
{
key.SetValue(name, v);
key.Close();
}
}
enum EventFlags
{
PULSE = 1,
RESET = 2,
SET = 3
}
private static void RaiseBackLightChangeEvent()
{
IntPtr hBackLightEvent = CreateEvent(IntPtr.Zero, false, false, "BackLightChangeEvent");
if (hBackLightEvent != IntPtr.Zero)
{
bool result = SetEvent(hBackLightEvent);
CloseHandle(hBackLightEvent);
}
}
レジストリの明るさの値が正常に変更されました。そして、私はPCからデバイスを切断した後(または接続)明るさも変化します。しかし、現時点では、実際の値が設定されていません。 何か不足している可能性があります(RaiseBackLightChangeEventはうまく動作し、エラーはありません)。私は他のイベントを起こす必要がありますか?そうでない場合は、デバイスの電源状態を実際に変更せずにシミュレーションするにはどうすればよいですか?または、レジストリからシステムの更新値を強制的に適用する方法はありますか? ご協力いただきありがとうございます。