0

マウス イベント ハンドラ内で実行中のすべてのプロセスを取得しようとすると、例外がスローされます。最初は、マウス イベント ハンドラーの前にキーワードを配置したため、問題が解決しないと考えましたが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

4

1 に答える 1