2012-08-14 3 views
4

서버에서 실행되는 Delphi 응용 프로그램이 있습니다. 이 응용 프로그램은 다른 응용 프로그램에서 사용되며 사용자가 Windows에 로그인 할 때 실행되는 내 DB에서 중요한 작업을 수행합니다. 모두 정상적으로 작동하지만 서버 관리자가 서버를 재부팅하고 Windows에 로그인하지 않는 경우가 있습니다. 서버가 Windows 로그인 상태로 유지되고 응용 프로그램이 시작되지 않습니다.Windows Service + 시스템 트레이에서 응용 프로그램 실행

작은 연구 끝에 사용자가 Windows에 로그인하기 전에도 내 응용 프로그램을 시작하기 위해 Windows 서비스를 만들기로 결정했습니다. 그러나 두 가지 형태가 있습니다. 한 양식은 현재 응용 프로그램이 실행중인 현재 프로세스를 보여주고 다른 응용 프로그램은 첫 번째 양식을 구성하는 데 사용되는 .ini 파일을 편집합니다.

사용자가 Windows에 로그인 한 후 로그인하기 전에 응용 프로그램을 시작하는 서비스를 만들려면 내 양식을 표시하거나 열어야하지만 시스템 트레이로 최소화해야합니다.

Windows 서비스를이 동작과 함께 사용하고 양식을 시스템 트레이에 최소화 할 수 있습니까?

+1

을하는 데 도움이 http://www.aldyn.ru/products/index.html

희망을 (HTTP ://stackoverflow.com/q/1260181/243614) 서로 상호 작용하십시오. –

답변

14

서비스가 Vista에서 시스템 트레이 아이콘을 포함하여 전혀 UI를 표시 할 수 없으며 이전 버전에서는 서비스가 권장되지 않습니다. 모든 Windows 버전에서 UI를 로그인 한 사용자가 실행할 수있는 비 서비스 응용 프로그램으로 분리하고 해당 사용자의 트레이에 대한 시스템 트레이 아이콘을 관리하며 필요에 따라 백엔드 서비스와 통신해야합니다 사용 가능한 IPC 메커니즘 (파이프, 소켓, COM, RPC, WCF 등)의 수에는 제한이 없습니다.

+1

좋은 조언! Windows 서비스 FAQ에서이 항목에 대한 자세한 내용은 [ "Windows 서비스에 GUI가 있어야합니까?"(http://www.coretechnologies.com/WindowsServices/FAQ.html#GUIServices)를 참조하십시오. – CoreTech

+0

글쎄, 이미 UI를 서비스와 함께 사용하지 않는다는 것을 이미 알고 있었다. 나는 단지 확인하고 싶었다. 내 응용 프로그램을 두 개의 응용 프로그램으로 분할하고 있습니다. 하나는 서비스이고 다른 하나는 양식이있는 간단한 구성 프로그램입니다. 사용자가 Windows에 로그인하기 전에 서비스에 대한 특정 구성이 시작됩니까? 대답 주셔서 감사합니다, 그것은 많이 도움이 될 것입니다. – Daniel

+0

Delphi의'TService' 클래스를 사용한다고 가정하면,'StartType' 속성은 서비스가 시작될 때를 제어합니다. 기본적으로'stAuto'로 설정되어 있습니다. 즉, OS가 시작될 때 자동으로 서비스가 시작됩니다. –

1

글쎄, 서비스에서 양식을 가질 수는 있지만 관리자 권한으로 실행해야하며 대화 형 서비스로 설정되어야합니다.

나는 시스템 트레이로 최소화 할 수있는 트레이 아이콘과 양식으로 멋진 서비스를 만드는 데 SVCOM을 사용했습니다.

여기에서 찾아 보게한다 : 당신이 [이 질문]에서 제안 한 다음, DB 작업에서 GUI를 분리하게 될 겁니다이 결국

+2

Vista 이상에서는 그렇지 않습니다. –

+1

SvCom은 편리한 도구처럼 보이지만 기술적으로는 Windows 서비스 응용 프로그램 내에서 말 그대로 양식을 사용할 수 없습니다. 여전히 두 개의 개별 응용 프로그램을 생성하고 함께 통합합니다. 이 도구를 사용하면 사실상 (신기술을 사용하여) 가능하지 않은 것을 말하는 것이 아니라 그러한 연결을 가능하게하는 데 도움이 될 수 있다고 대답하기 위해 답을 수정하십시오. –

관련 문제