2010-08-12 4 views
2

어떤 사람이 내 응용 프로그램을 사용하여 다른 응용 프로그램/프로세스의 트레이 아이콘을 숨기거나 표시하는 방법을 보여줄 수 있습니다. 'connected to internet''icon (데이터가 전송/수신되었을 때 파란색으로 바뀌는 두 컴퓨터) 모두) 내 응용 프로그램에서
편집 : 난 내가하는 방식으로 '('연결 아이콘 internect ''숨기려면이 코드를 사용할 수 있습니다 생각 http://scalabium.com/faq/dct0147.htm내 응용 프로그램/프로세스의 트레이 아이콘을 숨기려면 어떻게해야합니까?

ShowWindow(FindWindowEx(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil), 0, 'TrayClockWClass', nil), SW_HIDE); 

에서 찍은 조각을 사용하여 시스템 클럭을 숨길 수있는 아이콘은 TrayClockWClass를 대체하지만 클래스는? windowse이 도구를 사용하여 클래스 이름을 찾으려고 시도했지만 행운이 없음
edit2 : '트레이 창'을 마우스 왼쪽 버튼으로 클릭 한 다음 속성을 선택하고 속성 창에서 '사용자 정의'버튼을 클릭 한 다음 변경 아이콘 속성 '숨기기'에서 '항상 숨기기'숨기기에서 델파이에서이 작업을 수행 할 수 있습니다 (내가 원하는 경우) 언제든지 아이콘을 숨기거나 표시 할 수 있습니다 (델파이 사용).

+7

왜이 작업을 수행 할 것입니까? 그리고 제어 시스템이 사람들의 컴퓨터를 망치는 대신에 (아마도 레지스트리에서) 트레이가 사용하는 것을 숨기거나 보여주기위한 것이 무엇인지 알아내는 것이 어떻습니까? 그런 일들을 방해하면 사람들이 번거롭게 될 것입니다. 네트워킹 아이콘은 제어판에 의해 제어되므로이를 끄는 레지스트리 옵션을 찾으십시오. 작업 완료. – mj2008

+0

나는 다른 사람들의 컴퓨터를 혼란스럽게하지 않을 것이다. 나는 개인 프로그램을 작성하고있다. edit2를 통해 레지스트리를 통해 컴퓨터를 다시 시작해야 할 것이다. 속도로 내 프로그램에서 buttonclick으로 숨기거나 표시하고 싶습니다. –

+0

트레이 아이콘을 두 번 클릭하여 인터넷 연결 아이콘을 숨길 수 있습니다. 속성을 선택하고 연결되었을 때 알림 영역에 아이콘 표시 확인란의 선택을 취소하십시오. –

답변

4

API에 대한 액세스가 공개되지 않습니다. 다른 애플 리케이션의 아이콘. 유일한 옵션은 Shell_NotifyIcon()이 보내는 창 메시지를 가로 채기 위해 시스템 트레이 자체를 서브 클래스 화하여 어떤 HWND가 어떤 아이콘 ID를 등록하는지 추적 할 수 있도록하는 것입니다.

+0

고마워, 내 편집을 참조하십시오 –

+0

OS의 기본 제공 "비활성 일 때 숨기기"및 "항상 숨기기"기능에 프로그래밍 방식으로 액세스 할 수있는 방법이 없습니다. 다시 ** 다른 사람의 아이콘에 액세스하고 조작하는 ** 유일한 방법은 시스템 트레이의 창에 직접 연결하여 Shell_NotifyIcon()의 WM_COPYDATA 메시지를 차단하는 것입니다 (http://www.codeproject.com/KB/applications를 참조하십시오). /ShellTrayInfo.aspx)를 사용하여 각 아이콘의 HWND와 ID에 액세스 할 수 있으므로 Shell_NotifyIcon()을 직접 호출하거나 아이콘이 시스템에 도달하지 않도록 메시지를 차단할 수 있습니다 트레이. –

+0

그 대답은 일종의 대답이었습니다, 윈도우 API의 WM_COPYDATA 부분과 같은 arent 메시지입니까? 또한 예제는 C++입니다 (모르겠는데 :-()은 델파이 예제에 대한 링크가 있습니까 –

0

실행중인 컴퓨터를 담당하는 경우 아이콘을 마우스 오른쪽 버튼으로 클릭하고 수동으로 비활성화하십시오. 아마도 이것은 일부 설정을 레지스트리에 기록 (procmon을 사용하여 알아 내기)하므로 Active Directory를 통해 자동화 할 수 있습니다.

당신이 책임이 없다는 것은 당신과 당신이 아닌 임의의 컴퓨터를 의미하며, 귀하의 앱이 자발적으로 좋아하지 않는 아이콘을 숨기고 그 다음에 아니요, 그렇게 할 수있는 API가 없다는 것을 의미합니다. 시도해도 당신을 망쳐 놓으십시오. 아이콘을 숨길 때를 결정하는 것은 사용자의 몫입니다. 멋진 프로그램은 아닙니다.

+3

트레이 아이콘을 관리하는 애플리케이션을 작성하려는 경우, 예를 들어 사용자가 언제/어디서, 그를 도둑 맞 춥니 다. –

+0

그 응용 프로그램은 이미 작성되었습니다. 탐색기라고합니다. 아이콘을 표시하거나 숨기는 인터페이스가 있습니다. when/whe 그들을 보여주기 위해. 익스플로러에 포함되지 않은 개선 사항은 이미 문서화되지 않은 기능과 윈도우 탐색과 같은 트릭을 사용하여 익스플로러가해야 할 일을하지 않도록해야하기 때문에 정의 상 불안정합니다. 어쨌든 나쁜 생각입니다. 앱이 관리자 권한으로 상승한 다음 그 모든 더러운 트릭을 수행 할 수 있기 때문에 여전히 사용자 권한으로 작업을 수행 할 수 있습니다. 고맙게도 악성 앱의 경우에는 작동하지 않습니다. – himself

+2

첫째, 이후 OS는 이것에 대해 많은 유연성이 있지만, 이전 OS는 그렇지 않습니다. 둘째, 쉘 사용자 정의는 전례가 아닙니다. 이 사용자의 모양/동작을 변경하는 타사 소프트웨어를 사용하는 사용자가 많습니다. 셋째, 탐색기는 기본 셸이지만 다른 셸이 있으며 시스템 트레이스의 기능을 구현합니다 ... 나는 각각의 유효한 사용을 생각할 수 없다고 확신합니다. 요점은 악의적 인 코드 생성을 돕고 싶어하지 않는 사람에게는 좋지만, 판단 할 수있는 위치에서는 것은 쉽지 않다는 것입니다. 따라서 나는 당신의 대답의 색조에 반대했습니다. –

3

시계 아이콘이 알림 트레이와 동일한 영역에 있긴하지만 실제로는 같은 창이 아니라 별도의 창인 것이므로 사용자가 인용 한 시계 예제가 작동합니다. 동일한 아이콘을 모두 숨길 수는 없습니다. 왜냐하면 모든 아이콘이 전체적으로 처리되기 때문입니다.

당신은 비록 전체 알림 트레이, 숨길 수 :

ShowWindow(FindWindowEx(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil), 0, 'SysPager', nil), SW_HIDE); 
+0

왜 내가 낡은 질문에 대한 답변을 허용 된 것으로 게시하고 있는지 궁금합니다. 물론 당신은 자유로울 수 있습니다 ... 단지 조금 여기 (적어도 나를 위해) 사용되지 않습니다. – jachguate

+3

미래에이 질문을 찾아 내고 시계를 숨길 수있는 이유에 대한 설명을 원하지만 개인 트레이 아이콘이 아닌 사람들을 위해 (나 자신과 같이). 아무도 그것을 설명하지 않았다. – FSD

+0

안녕하세요 fsd, 대답에 대한 나이가 지나면 내 스택 오버플로 계정에 로그인했습니다. –