2011-10-06 1 views
2

두 개 이상의 응용 프로그램에서 볼 수있는 공개 이벤트를 발생시키는 방법을 찾고 있습니다. 가장 먼저 떠오르는 것은 SystemEvents입니다.C# 다른 응용 프로그램에서 볼 수있는 시스템 이벤트 만들기

새 SystemEvent 또는 둘 이상의 응용 프로그램이보고들을 수있는 공개 이벤트를 "정의"하는 방법이 있습니까?

+0

시스템 이벤트는 실제로 원하는 것입니까 아니면 가능한 아이디어입니까? 프로세스 간 통신 (IPC)을 수행하는 방법은 여러 가지가 있습니다. –

+0

@DaveHillier : 응용 프로그램은 이벤트의 유용 여부를 처리해야합니다. –

+0

하지만 SystemEvent를 사용해야합니까? 방법에 대해 IpcChannel, 나는 그것이 방송을 지원한다고 생각한다. –

답변

2

정말 SystemEvent를 사용해야합니까? 다른 방법은 어떻습니까? IPC

IpcChannel은 사용자의 요구 사항에 맞는 대체 기술입니다.

1

쉬운 .Net이 없다고 생각합니다. 내가 아는 유일한 방법은 PostMessage 또는 SendMessage을 Windows 이벤트 대기열에 사용하는 것입니다. About Messages and Message Queues의 내용을 읽을 수 있습니다. Google에서 이러한 기본 명령을 호출하는 데 필요한 많은 리소스가 있지만 가장 좋은 방법 중 하나는 pinvoke.net입니다.

1

SystemEvents의 기본 구성 요소는 모든 최상위 창으로 브로드 캐스팅되는 Windows 메시지입니다. WM_SETTINGCHANGED 같은 메시지 당신도 HWND_BROADCAST를 사용하여 SendMessageTimeout을 pinvoke하여 메시지를 브로드 캐스팅 할 수 있습니다. 이것은 다소 위험합니다. 이전에 메시지 번호를 본적이없는 프로그램에 메시지를 보낼 것입니다. 최소한 RegisterWindowMessage()를 사용하여 알려진 고유 한 메시지 번호와 알림을 인식하고 나머지 프로세스를 혼동하지 않도록하는 프로세스를 확보해야합니다.

예를 들어 명명 된 파이프 서버와 같이 위험이 적은 신뢰할 수있는 메커니즘이 있습니다.