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
[74600] Re:[질문] System Tray에 남아있는 중복되는 찌꺼기 아이콘 문제..
빌더(TWx) [builder] 395 읽음    2017-09-27 20:54
단단한돌 님이 쓰신 글 :
: 환경: 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에서 사용하던 트릭도 사용할 수가 없네요.
:
: 어떻게 해결해야 할까요?
:
: 감사합니다.
:



답변:


모든 것을 컴포넌트에 의존하지 않고...
System Tray Icon을 Windows API를 이용해서 처리했다면...
방법은 이미 본인이 잘 알고 있었을 겁니다.


System Tray Icon은 OS가 제공하는 Shell_NotifyIcon() API를 이용해서 생성하도록 되어 있습니다.

Tray Icon을 제거하는 것도 역시 마찬가지로...
Shell_NotifyIcon(NIM_DELETE,...) API를 이용하면 되는 거고...

+ -

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