複数のアプリケーションで見ることができる公開イベントを開催する方法を考え出そうとしています。最初に頭に浮かぶのはSystemEventsです。
新しいSystemEvent、または複数のアプリケーションが表示およびリッスンできるパブリックイベントを「定義」する方法はありますか。
複数のアプリケーションで見ることができる公開イベントを開催する方法を考え出そうとしています。最初に頭に浮かぶのはSystemEventsです。
新しいSystemEvent、または複数のアプリケーションが表示およびリッスンできるパブリックイベントを「定義」する方法はありますか。
本当にSystemEventを使用する必要がありますか?IPCの他の方法はどうですか
IpcChannelは、要件に合うと思われる代替手法です。
これを行うための簡単な.Netが組み込まれているとは思いません。私が知っている唯一の方法は、PostMessage
またはSendMessage
Windowsイベントキューを使用することです。メッセージとメッセージキューについての詳細を読むことができます。グーグルでこれらのネイティブコマンドを呼び出すためのリソースはたくさんありますが、最初に最適なものの1つはpinvoke.netです。
SystemEventsの基礎となる配管は、すべてのトップレベルウィンドウにブロードキャストされるWindowsメッセージです。WM_SETTINGCHANGEDのようなメッセージ。メッセージをブロードキャストしたり、HWND_BROADCASTを使用してSendMessageTimeoutをピンボークしたりすることもできます。これはやや危険です。これまでメッセージ番号を見たことがないプログラムにメッセージを送信することになります。少なくとも、RegisterWindowMessage()を使用して、通知を認識し、残りのプロセスを混乱させないようにするために、自分自身とプロセスに認識されている一意のメッセージ番号を取得する必要があります。
たとえば、名前付きパイプサーバーなど、リスクの少ない、より信頼性の高いメカニズムがあります。