C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[74599] [질문] System Tray에 남아있는 중복되는 찌꺼기 아이콘 문제..
단단한돌 [heaven2] 4678 읽음    2017-09-27 18:20
20170927_180200.png 50.1KB System Tray에 중복으로 남아 있는 아이콘들(빨간색 아이콘들)...
환경: C++ Builder XE5

4년전에 했던 프로젝트의 문제를 해결하려니 이래저래 까다롭네요.

제가 만든 프로그램은 System Tray에 있다가 사용자가 UI 화면을 Open하면
UI 화면이 열리고, Tray에서는 빠지고,
UI 화면을 닫으면(Form Close event), 다시 Tray에 들어가도록 되어 있습니다.
프로그램의 종료는 Tray에 들어갔을 때 Popup 메뉴에서 종료를 선택하면 프로그램 종료가 되도록 구성했습니다.
종료될 때 Tray에 있는 Icon도 함께 삭제되도록 하였습니다.

문제는 정상적인 종료일 때는 상관없는데,
비정상적인 종료(WatchDog에서 TerminateProcess(hProcess,0) 형태로 Process Kill 시키는데요..)
Process Kill은 되지만 System Tray에 Icon은 정리가 되지 않네요.

예전에, XP에서는 이러한 문제 때문에..
프로그램 시작하면서 마우스 포인터를 강제적으로 System Tray에 가도록 해서 아이콘을 Refresh하는
소스를 봤었는데..

Win7이나 Win10에서는 System Tray가 접혀있는 상태로 사용자가 ▲를 클릭해줘야 Tray UI가 열리니
XP에서 사용하던 트릭도 사용할 수가 없네요.

어떻게 해결해야 할까요?

감사합니다.

//---------------------------------------------------------------------------
bool TFormMain::GoToSystemTray()   // Tray에 집어 넣는다. 
{
	Hide();
	WindowState = wsMinimized;
	TrayIcon->Visible = true;
	return true;
}

//---------------------------------------------------------------------------
bool TFormMain::RestoreFromTray()    // Tray에서 꺼낸다. 
{
	TrayIcon->Visible = false;
	Show();
	WindowState = wsNormal;
	Application->BringToFront();
	LocateRightButton();
	return true;
}

//---------------------------------------------------------------------------
void __fastcall TFormMain::FormClose(TObject *Sender, TCloseAction &Action)
{
	if ( !m_bExit ) {
		Action = caNone;
		GoToSystemTray();              // 시스템 트레이로 이동 
		return;
	} else {                                       // 정상적인 종료
		//------------------------------------------------------------------
		// Program Terminate ( Resource Release )
		//------------------------------------------------------------------
                ..
                // Resource Release...
                ..
		Action = caFree;
		return;
	}
}

+ -

관련 글 리스트
74599 [질문] System Tray에 남아있는 중복되는 찌꺼기 아이콘 문제.. 단단한돌 4678 2017/09/27
74600     Re:[질문] System Tray에 남아있는 중복되는 찌꺼기 아이콘 문제.. 빌더(TWx) 5380 2017/09/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.