0

Windows Mobile 6.1でC#.Net Compact Edition 3.5を使用していますが、C++またはWindowsAPIの呼び出しにはあまり詳しくありません。プログラムでバッテリーのアイドル/疑わしい時間を設定されている時間(通常はデフォルトで3/5分)から15分に変更する必要があります。オンラインでいくつかの例を見つけましたが、これまでのところ、どれも機能しないか、C ++であるか、C#で実行するための説明やコンテキストがないため、それらを実装する方法がわかりません。

        int test = SystemParametersInfo(SPI_SETBATTERYIDLETIMEOUT, 15, null, 0); //15 seconds, to test it actually working
        //test return 0

C#の.Net CE 3.5から、Windows Mobile 6.1のバッテリータイムアウトを変更するにはどうすればよいですか?

ありがとう

編集:このアプリケーションを要求しているクライアントは、この動作を具体的に要求しています。彼らは、アプリケーションの実行中のタイムアウトを長くし、実行されていないときのシステムのデフォルトのタイムアウトを望んでいます。

4

3 に答える 3

1

私はハンスに同意します。これは、質問せずにデバイスを変更することでエンドユーザーを困らせるためのおそらく最良の方法です。それは、すべてのデバイスが同じセットアップで出荷されることを望んでいたクライアントに対して同様のことをしたことを意味します。変更のチェックリストを作成するよりも、インストーラーで行う方が高速でした。

あなたが求めている設定は、次のレジストリ設定に保持されていると思います。

\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts

その後、フレームワークを介してこれを変更できます

RegistryKey singleKey = 
     registryKey.OpenSubKey(
     "\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts", true);

singleKey.SetValue("BattSystemIdle", 600);
singleKey.Close();

どのレジストリキーを使用しているかは100%わかりませんが、優れたBreaksoftモバイルレジストリエディタを使用して、必要な正確なキーを見つけることができます。デバイスを変更し、キーが変更されてもキーを監視し続けることで、目的の設定をすばやく見つけることができます。

編集:デッドリンク-Breaksoft Mobile Registry Editor

以下のコメントで提供されている代替案を使用してください

MSDN-電源管理のタイムアウト

于 2011-06-30T16:20:59.323 に答える
1

VS2008のWindowsMo​​bile6プロジェクトで流暢な正確な方法を使用できませんでした。最初に、レジストリパスの\が制御コードプレフィックスとして識別され、次に、RegistryKeysingleKey行がビルド中にエラーを引き起こしました。以下のコードは機能しました:

var localMachine = Registry.LocalMachine;
var subKey = localMachine.OpenSubKey(@"\System\CurrentControlSet\Control\Power\Timeouts", true);
subKey.SetValue("BattSuspendTimeout", 600);

ただし、有効にするには再起動する必要があります。

于 2014-12-22T12:06:24.867 に答える
0

SystemParametersInfo関数の場合、C#でdllimportコマンドを使用してP/Invokeする必要があります。pinvoke.netには、Windowsでこれを行う例があります。Windows Mobileに移植するには、参照をからuser32.dllに変更するだけcoredll.dllです。 http://www.pinvoke.net/default.aspx/user32.systemparametersinfo

[DllImport("coredll.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(uint uiAction, uint uiParam, IntPtr pvParam, SPIF fWinIni);

また、「2つのプログラムがこれを行った場合はどうなるか」も考慮してください。

-PaulH

于 2011-07-01T16:29:40.423 に答える