거의 shell_notifyicon 오류가 표시되는 경우 이 도움말이 도움이 될 수 있습니다.
승인됨: Fortect
g.앞에서 언급했듯이 Shell_NotifyIcon을 지원하는 이러한 일반적인 오류는 Explorer와의 기본 통신 시간이 초과되거나 Explorer가 수신 대기하기 전에 발생할 때 발생합니다. Shell_NotifyIcon에 대한 주석에서 언급했듯이 GetLastError는 시간 초과 시 ERROR_TIMEOUT(내재된 SendMessageTimeout 호출에서 상속된 기존 오류 코드)을 항상 반환합니다.
G.
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
저는 백그라운드에서 실행되는 서비스를 작성 중이며 사용자가 때때로 의심할 여지 없이 요소와 상호 작용할 수 있도록 알림 세그먼트에 아이콘을 배치하고 싶습니다. 앱은 현재 내 개발 데스크탑에서 제대로 작동해야 합니다. 오히려 다른 랩탑에서도 작업하고 있습니다. 기계도 있고 NIM_ADD에서 Shell_NotifyIcon을 호출하는 것을 발견했습니다.항상 실패하고 GetLastError는 ERROR_NO_TOKEN 1008:을 반환합니다. Windows 9 SP1은 두 컴퓨터 모두에서 작동합니다.
그러나 문제는 적절한 다운로드 시간 초과와 관련된 것 같습니다. 디버깅하는 동안 내 응용 프로그램이 실제로 충돌합니다. 그렇지 않으면 컴퓨터가 완전히 게으르게 실패합니다.
가능한 원인은 무엇입니까? 자체적으로는 실제 오류 코드에 대한 정보를 찾을 수 없으며 최소한 Shell_NotifyIcon과 관련된 정보는 없습니다. lpdata 매개변수 측면에서 각 직접 운영 체제에 대한 모범 사례를 따르고 있습니다. 다음과 같이 초기화됩니다:
// 공지ZeroMemory(& m_nid, sizeof(NOTIFYICONDATA));// Shell32 버전 번호를 확인하고 이 구조에 연결된 크기를 설정합니다.// http://msdn.microsoft.com/en-us/library/bb773352%28v=vs.85%29.aspxULONGLONG 버전은 GetDllVersion(_T("Shell32.dll"))과 일치합니다.if (버전> = MAKEDLLVERULL (6,0,6,0))m_nid.cbSize = sizeof (NOTIFYICONDATA);m_nid.uVersion은 NOTIFYICON_VERSION_4와 같습니다.그렇지 않으면 (버전> = MAKEDLLVERULL (6,0,0,0))m_nid.cbSize = NOTIFYICONDATA_V3_SIZE;m_nid.uVersion = NOTIFYICON_VERSION_4;그렇지 않으면 (MAKEDLLVERULL 버전(5,0,0,0))M_nid> = .CbSize = NOTIFYICONDATA_V2_SIZE;m_nid.uVersion = NOTIFYICON_VERSION;또 다른m_nid.cbSize = NOTIFYICONDATA_V1_SIZE;m_nid.uVersion은 0과 같습니다.m_nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP;// Windows 7 이상 시스템만 GUID를 활용하여 알림 아이콘을 식별할 수 있습니다.if (IsWin7OrLater())= NIF_GUID;m_nid.guidItem = NOTIFICATION_ICON_GUID;또 다른m_nid.uID = 알림_ICON_ID;// 트레이 세트에 대한 알림 창:m_nid.hWnd는 m_hWnd를 의미합니다.m_nid.uCallbackMessage = UM_TRAYNOTIFY;// 아이콘 바를 정의한 다음 툴팁:m_nid.hIcon은 App.Tooltip 로딩 아이콘(idr_mainframe)에 해당합니다.// 마우스가 항상 표시 위에 있는 경우 사용할 수 있습니다. NIF_TIP 플래그가 설정되어야 하지만 가로 형식 안에 있어야 합니다.CString = strToolTip _T("스케줄러");_tcsncpy_s (m_nid.szTip, strToolTip, strToolTip.GetLength());// 응용 프로그램이 제대로 잠기지 않은 경우 아이콘이 여전히 존재할 수 있습니다.// 하지만 이제 잘못된 hWnd가 추가되었습니다. 다시 추가하기 전에 제거하십시오.Shell_NotifyIcon (NIM_DELETE, & m_nid);// 일종의 기호를 추가합니다.bResult = Shell_NotifyIcon (NIM_ADD, & m_nid);DWORD = dw GetLastError();// 심볼의 동작을 지정합니다.bResult는 Shell_NotifyIcon(NIM_SETVERSION, & m_nid)과 동일합니다.
<울> <리> 편집자 앤드류 폴든 다음 달 3월 27일, 12개월마다 화요일, 오후 12시 14분. 눈에 띄지 않는 코드 제거
<리> 움직임 마이크 도스 장 3월 28일 수요일 오후 3:21 Shell API 질문(출처: 일반적인 Windows 데스크톱 개발 문제)
지금 이 간단한 다운로드로 컴퓨터 성능을 높이십시오. 년