2010-02-15 1 views
0

시스템 시작시 실행중인 (즉, .Net Framework 2.0을 대상으로하는) 응용 프로그램이 있는데 NotifyIcon을 표시하려고합니다.AutoLogon에서 실행중인 NotifyIcon 및 SSDP 서비스를 표시하는 방법

사용자가 정상적으로 실행하거나 시스템이 이미 로그온 한 후 하위 프로세스로 시작될 때 내 프로그램이 시작될 때 모든 것이 정상입니다.

시스템이 POSReady2009 (기본적으로 단일 사용자가 설정된 XP)를 사용하여 자동 로그온을 수행 할 때 내 응용 프로그램이 시작되면. 그러면 NotifyIcon이 활성화되지 않습니다.

이후에 언제든지 아이콘의 .Visible을 (타이머로) 확인하면 항상 visible = true로보고됩니다.

SSDPSrv를 해제하고 컴퓨터를 다시 시작하면 아이콘이 올바르게 표시됩니다. 나는 이것이 .Net 2 시스템의 상단에 설치된 .Net 3.5sp1과 관련된 몰래 의심을 가지고있다.

NotifyIcon을 항상 사용자가 사용할 수 있도록하기 위해 따라야 할 몇 가지 프로세스가 있습니까?

설정이 RegisterWindowMessage("TaskbarCreated")이지만이 메시지는 호출하지 않습니다. 제외 할 경우 Explorer.exe를 강제 종료하고 다시 시작하십시오. 그럼에도 불구하고 NotifyIcon은 이러한 알림을 중간에 등록하기 때문에 필요하지 않아야합니다.

내 프로그램의 시작을 멈추게되어 기쁩니다. 일단 프로그램이 시작되면 아이콘이 올바르게 표시 될 것으로 기대합니다.

내가 자세히 설명 할 수없는 기술 자료 문서가있는 경우 이에 대해서도 만족할 것입니다.

답변

1

글쎄 그건 다소 바보 같지만이 문제를 해결하기 위해 시동 과정을 수정해야 할 필요가 있습니다.

설치 프로그램이 Startup 폴더에 가져 오는 바로 가기입니다.

트리거하는 프로그램이 더 이상 자동으로 시작하지 않습니다. 대신 우리가 시작한 후에 다른 프로그램에 알립니다 (트리거 파일 삭제).

다른 프로그램은 사용자가 우리를 닫았는지 아니면 충돌하고 자동으로 프로그램을 다시 열 것인지를 모니터링합니다.[시스템을 완전히 닫으려는 경우 적절한 절차가 있습니다.]

프로그램 시작시 SSDP 서비스가 사용 가능한지 확인하고 사용하지 않도록 설정되어 있는지 확인합니다. 이 서비스가 시작되었습니다. 그런 다음 SQLServer가 실행 중인지 확인합니다.

그런 다음 NotifyIcon을 준비하고 .visible= true으로 설정하면 모두 양호합니다.

사용자가 어쨌든 Windows 탐색기를 종료하는 경우에도 RegisterWindowMessage은 계속 유지됩니다.

1

음 ... 이상합니다.

이 방법이 효과가 없을 수 있으며, 최선의 방법은 아닙니다.하지만 먼저 무엇보다도 NotifyIcon1.Visible = True을로드 이벤트에 넣으십시오. 이 경우

는 작동하고 있다면 적어도 당신이 볼 수있는,

NotifyIcon1.Visible = False 
NotifyIcon1.Visible = True 

이 다음 숨기고마다 ​​타이머 틱 아이콘을 표시해야합니다 ... 왜 타이머에이를 추가하지 작동하지 않습니다 . 어쩌면 타이머를 10 번 실행 한 다음 종료합니다. 그러면 스크립트가 아이콘을 숨기고 아이콘이 10 번 표시되어 시스템이 준비되어야합니다.

내가 작동하는지 알려주세요. 그렇지 않다면 나는 긁적 거리는 수염을 가지고있을 것이고 다른 생각을하게 될 것입니다!

+0

이 시도했지만 실제로 시스템에서 시작하는 것입니다. Windows 탐색기로 프로그램을 시작하면 문제가되지 않습니다. 프로그램이 anothere 프로그램 (아이러니하게도 Windows 탐색기로 시작됨)의 하위로 시작될 경우에만 ... StartMenu-> Startup –

관련 문제