고수는 아니지만..
저는 클로즈전에 쿼리 이벤트를 이용합니다..
디자인타임에 tapplicationevent를 드래그 해놓으시면 편하게 코딩할수 있습니다(미니마이즈 이벤트등)
기본적인 것들은 ttrayicon 도움말을 참조했고요.. F1맹신자입니다;
ms-help://embarcadero.rs_xe4/codeexamples/TTrayIcon_(C++).html
bool CloseFlag;
void __fastcall TForm_Main::FormCloseQuery(TObject *Sender, bool &CanClose)
{
// Hide the window and set its state variable to wsMinimized.
if(!CloseFlag) {
Hide();
WindowState = wsMinimized;
CanClose = false;
// Show the animated tray icon and also a hint balloon.
TrayIcon->Visible = true;
TrayIcon->Animate = true;
if(DS->Connection->Connected)
TrayIcon->BalloonHint = "백그라운드에서 프로그램이 실행중입니다.\n종료하려면 아이콘을 우클릭 후 종료하세요.";
else
TrayIcon->BalloonHint = "백그라운드에서 프로그램이 실행중입니다.\n데이터베이스에 접속되지 않았습니다.";
TrayIcon->ShowBalloonHint();
}
else {
CanClose = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::FormClose(TObject *Sender, TCloseAction &Action)
{
CloseFlag = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Main::ApplicationEventsMinimize(TObject *Sender)
{
// Hide the window and set its state variable to wsMinimized.
Hide();
WindowState = wsMinimized;
// Show the animated tray icon and also a hint balloon.
TrayIcon->Visible = true;
TrayIcon->Animate = true;
TrayIcon->ShowBalloonHint();
}
//---------------------------------------------------------------------------
땅주인 님이 쓰신 글 :
: 개발 환경: C++ Builder XE5
:
: 24시간, 365일 운영되어야할 S/W라서,
: TTrayIcon을 이용해서 프로그램을 SystemTray에 넣었습니다.
:
: SystemTray로 들어가지 않은 상태(화면에 보이는 상태)에서는
: 작업관리자의 작업 목록에서 강제 종료를 해버리면, 종료되지 않고 SystemTray로 들어가 버리내요.
:
: SystemTray에 들어간 상태에서는 작업관리자의 작업목록에 보이지 않네요
: (프로세스 목록에는 보이네요.)
:
: 소스코드는 아래와 같이 같은데,.. .
: 아마도 강제로 죽이는 것이 해당 프로그램에 WM_CLOSE 이벤트를 보내서 그런것인가 싶습니다.
:
: // Form Close Event
: void __fastcall TFormMain::FormClose(TObject *Sender, TCloseAction &Action)
: {
: if ( !m_bExit ) {
: Action = caNone;
: GoSystemTray();
: return;
: } else {
: Action = caFree;
: return;
: }
: }
:
: 사용자가 프로그램의 X버튼을 누르면, SystemTray로 이동하고,
: 작업관리자나 외부에서 프로그램을 종료시키면 그냥 자동으로 종료하게끔 하고 싶은데..
:
: 어떻게 해야 할 지?
:
: 고수님들의 조언을..
: 감사합니다.
:
|