VSTOアプリケーションレベルのWord AddInとWPFアプリケーションを開発中ですが、システムがスリープ状態になり、その後再開するときに通知する必要があります。イベントハンドラを各アプリケーションのSystemEvents.PowerModeChangedイベントにバインドしましたが、何らかの理由でシステムがスリープまたは再開するときに呼び出されることはありません。テストするだけで、私は単にシステムがスリープ状態になるときにコンソールに書き込もうとしています。私もブレークポイントを設定しようとしましたが、それもうまくいきませんでした。とにかく、もしシステムがアプリケーションを一時停止しているとすれば、私は確信が持てません。しようと、それは決して印刷物や休憩のいずれかで:SystemEvents.PowerModeChangedイベントハンドラがVSTOおよびWPFアプリケーションで呼び出されていない
VSTOアドイン
void ThisAddIn_Startup(object sender, EventArgs e)
{
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(powerModeChanged);
}
public void powerModeChanged(object sender, PowerModeChangedEventArgs args)
{
Console.WriteLine("Sleeping.....");
}
WPF
internal MyControl()
{
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(powerModeChanged);
}
public void powerModeChanged(object sender, PowerModeChangedEventArgs args)
{
Console.WriteLine("Sleeping!!");
}
私はプライベートにパブリックからイベントハンドラのアクセスレベルを変更しようとしています各アプリケーションのコードの他の部分にバインドを移動するだけでなく、問題を解決しませんでした。どんな助けでも大歓迎ありがとう!
解決策:私がVirtualBox VMを介してウィンドウを実行していたため、コメントと役立つ回答によれば、イベントは発生していませんでした。同僚がネイティブのWindowsマシン上でコードを実行すると、それは機能しました。
あなたはVSTOで 'Console'を持っていけないので、これは、最も可能性の高い原因です。あなたの出来事が発射されるのを確実にするためにコンソールの代わりに 'ファイル'に書き込もうとしてください。 – lokusking
@ lokuskingはそれを試してみましたが動作しませんでした。つまり、私のEventHandlerがイベントに正しくバインドされていないということでしょうか? – Midas
また、VirtualBox Windows 10 VMインスタンスでこれを実行していますが、それが問題なのかどうかはわかりません。 – Midas