マウスイベントハンドラ内で実行中のすべてのプロセスを取得しようとすると、例外がスローされます。
私はasync
というキーワードをマウスイベントハンドラの前に置くので、問題は続きますが、非同期メソッドでも例外がスローされるため、そうではありませんでした。
私はMouseKeyHookライブラリを使用しています。グローバルフック内でManagementObjectSearcherが機能しない
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!
{
// ...
}
}
例外メッセージ:私はすべてのプロセスを取得していたから
Additional information: Transition into COM context 0x1ac936a0 for this RuntimeCallableWrapper failed with the following error: An outgoing call cannot be made since the application is dispatching an input-synchronous call. (Exception from HRESULT: 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL)).
イベントハンドラ
ご覧のとおり、searcher.Get()
を呼び出すと例外がスローされます。
注:このメソッドは、マウスイベントハンドラ(MouseUp
)の外で使用すると問題なく動作します。
有用なアドバイスをいただき、必要に応じて追加情報を提供します。ありがとうございます。