マウス イベント ハンドラ内で実行中のすべてのプロセスを取得しようとすると、例外がスローされます。最初は、マウス イベント ハンドラーの前にキーワードを配置したため、問題が解決しないと考えましたがasync
、非非同期メソッドでも例外がスローされるため、そうではありませんでした。
MouseKeyHookライブラリを使用しています。
例外メッセージ:
追加情報: この RuntimeCallableWrapper の COM コンテキスト 0x1ac936a0 への移行は、次のエラーで失敗しました: アプリケーションが入力同期呼び出しをディスパッチしているため、発信呼び出しを行うことができません。(HRESULT からの例外: 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL))。
すべてのプロセスを取得するイベント ハンドラー:
private async void MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
List<ProcessInfo> allRunningProcesses = Logic.GetAllProcesses();
// ...
}
以下を使用してすべてのプロセスを取得しますManagementObjectSearcher
。
public static List<ProcessInfo> GetAllProcesses()
{
using (var searcher = new ManagementObjectSearcher(wmiQueryString))
using (var results = searcher.Get()) // EXCEPTION THROWN!
{
// ...
}
}
ご覧のとおり、呼び出し時に例外がスローされsearcher.Get()
ます。注:このメソッドは、マウス イベント ハンドラ ( ) の外部で使用しても問題なく機能しますMouseUp
。