2009-04-24 7 views
1

C#으로 작성된 서비스가 시각적 피드백을 바탕 화면에 제공 할 수없는 것은 사실입니까?C# 서비스의 시각적 피드백

사용자 로그온 전에 서비스가 시작되고 그 시점에서 데스크톱을 사용할 수 없다는 것을 알고 있습니다. 그런 다음 내 질문에, 시스템 이벤트 로그에 이벤트를 기록하는 것을 제외하고는 사용자에게 매우 효율적인 방식으로 통신하지 않습니다. 서비스에서 메시지 상자를 표시하기위한 대안은 무엇입니까?

만 두 가지 옵션이 마음에 와서 :

  1. MessageBox.Show -이 옵션이 될 수 없습니다 보인다 둘러보고있다.
  2. 내가이 메시지 박스가 표시해야하는 이유에 대한 이유를 제공하지했습니다

사용자 지정 양식을 표시합니다. "우수 사례"에 대한 응답을 원하지 않으므로 표시해야한다고 가정하십시오. 최소한이 시점에서.

답변

4

Windows 서비스는 사용자와의 상호 작용을 수행하면 안됩니다. 대신 서비스와 통신하는 사용자가 정보를 제공하거나 입력을 수집 할 수있는 별도의 제어 또는 구성 응용 프로그램 (시스템 트레이에 자주 배치됨)을 만들어야합니다.

실제로이 작업을 수행하려면이 Knowledge Base articleMSDN article을 참조하십시오. 여기에는 몇 가지 힌트가 포함되어 있습니다.이를 달성하기 위해서는 C#에서 P/Invoke를 사용해야 할 것입니다.

1

Here are some ways that you can make interactive services.하지만 Vista를 사용하지 않은 사용자도 있습니다.

사용자가 서비스에서 정보를 가져올 수있는 한 가지 방법은 용도별로 별도의 UI를 작성하는 것입니다. 서비스는 예를 들어 WCF 엔드 포인트를 가질 수 있으며 GUI가 보여줄 메시지를 푸시 할 수 있습니다. 이렇게하면 로그인 한 사용자가있을 때만 메시지가 표시되고 LocalSystem 계정에서 창을 열면 보안 상 위험하지 않습니다. 이 GUI를 트레이 및 팝업 토스트에서 쉽게 실행할 수 있으므로 사용자가 로그인 할 때 방해가되지 않으며 시작됩니다. 데스크탑과 직접 상호 작용하는 것보다 훨씬 효과적입니다.

1

나는 그것을 사용한 적이 없으며 이것을하지 않는 것에 대한 모든 면책 조항을 포함합니다.

그러나 MessageBoxOptions.ServiceNotification 열거 형을 확인하시기 바랍니다.

Here's a good blog post입니다.