2010-04-05 2 views
3

안녕하세요, 정상적으로 최소화하는 대신 모든 프로그램을 시스템 트레이에 최소화하는 프로그램을 만들려고합니다. 이것이 가능한가? 나는 구글에서 주변을 둘러 보았지만 아무것도 찾을 수 없다.모든 프로그램을 시스템 트레이로 최소화

답변

5

시스템 트레이의 아이콘을 "알림 아이콘"이라고합니다.

자신의 응용 프로그램에이 작업을 수행하려면 WinForms를 사용하는 경우 NotifyIcon 클래스를 사용하여 시스템 트레이에 아이콘을 표시 할 수 있습니다. 그런 다음 작업 표시 줄에 창을 표시하지 않도록 설정하면됩니다.

WPF를 사용하는 경우 대체가 필요하지 않으며 이전 WinForms NotifyIcon 클래스를 사용해야합니다. 이에 대한 자세한 내용은 MSDN sample을 확인하십시오. 다른 응용 프로그램을 숨기려면


은, 당신이해야 할 것은 사용 API는 응용 프로그램 윈도우의 상태로 변경하는 호출이다.

FindWindow을 사용하여 숨기려는 창에 대한 핸들을 얻을 수 있습니다. 그러면 GetWindowLong을 사용하여 창 상태를 가져올 수 있습니다. 그런 다음 상태에서 WS_EX_APPWINDOW 플래그를 제거하고 SetWindowLong 메서드를 사용하여 새 스타일을 적용해야합니다. 이렇게하면 작업 표시 줄에서 제거됩니다. 그런 다음 Get/SetWindowState 메서드를 사용하여 창의 상태를 찾아 숨기거나 최소화 할 수 있습니다.

여전히 시스템 트레이에 자신의 아이콘을 표시하려면 NotifyIcon 클래스를 사용해야합니다.

그 모두와 행운을 비네. 개인적으로 시도한 것이 아니지만 이러한 방법 호출을 다른 방식으로 사용했습니다. C#에서 API를 작성하지 않은 경우 버전 API 메소드에 대한 DllImport를 알아 내야 할 때가 있습니다. 너무 어렵지 않아야합니다.


Crazyd22는 API 방식의 약간 다른 세트를 사용하지만 거의 같은 효과를 달성하는 codeproject article을 발견했다. (아래 의견을 참조하십시오.)

+0

네, iTunes와 같은 다른 응용 프로그램을 의미합니다. – Crazyd22

+0

아, 다른 프로그램을 최소화하고 싶습니다. 그래도 여전히 시스템 트레이에 아이콘을 표시하기 위해 NotifyIcon을 사용해야하지만 프로그램 작업 표시 줄 창을 숨기려면 API 호출을 찾아야합니다. 잠깐만, 내가 뭔가를 찾을 수 있는지 알게 될거야. –

+0

알겠습니다, 감사합니다. ^^ – Crazyd22

관련 문제