2014-12-09 1 views
1

내 .exe에는 하드 코드 아이콘이 있지만 런타임에 파일에서 다른 아이콘을로드 할 수 있습니다. 그것은 수행하여 파일에서로드 아이콘을 활성화 :exe가 프로그램 파일에있는 경우 런타임에 작업 표시 줄 아이콘 변경

델파이에서 Windows API에 다음과 같은 호출로 귀결 C++ 빌더에서
Application->Icon->LoadFromFile(filename); 

:

SendMessage(Handle, WM_SETICON, ICON_BIG, LPARAM(GetIconHandle)); 
SetClassLong(Handle, GCL_HICON, LPARAM(GetIconHandle)); 

내 실행 파일을 실행하는 경우 C에서 : \, 또는 사용자 디렉토리, 다음 아이콘 모두 올바르게 업데이트 : 메인 윈도우의 제목 표시 줄

  • 아이콘에에

    • 코너 아이콘 \ 프로그램 파일 \ MyApp를, 다음 해당 업데이트의 첫 번째 두 올바르게 : 그러나 나는 폴더 C로 복사 된 동일한 실행 파일을 실행하면

    작업 표시 줄

  • 에서 Alt-Tab을 화면
  • 아이콘입니다. 그러나 작업 표시 줄의 아이콘은 업데이트되지 않습니다. 작업 표시 줄에는 여전히 하드 코딩 된 아이콘이 표시됩니다.

    C:\Program Files에서 시작된 프로그램의 작업 표시 줄 아이콘에 대한 특별한 보호 장치가 있습니까? 아니면 여기서 뭐하고있는거야?

    나는 cleared the icon cache이며 아무런 차이가 없습니다. 나는 또한 ICON_SMALL와 함께 여분의 SendMessage을 추가하려고 시도했지만 아무런 차이가 없었다.

  • 답변

    1

    나는 정확히 같은 문제가 발생했습니다. 내 솔루션은 순전히 내 주요 실행 파일의 spawnlp를 수행하는 더미 프로그램을 작성한 다음 종료합니다. 더미 프로그램을 문제없이 작업 표시 줄이나 시작 메뉴에 고정시킬 수 있으며, 런타임시 메인 프로그램의 작업 표시 줄 아이콘이 바뀝니다.

    관련 문제