WinAPI를 사용하여 exe 파일에서 아이콘을 추출하려고하는데 작동하지 않습니다.Qt 앱에서 WinAPI를 사용하여 아이콘 추출 중
QIcon OSTools::AppsInterface::extractAppIcon(const QString &fileName) const {
wchar_t *convertedName = new wchar_t[fileName.length() + 1];
fileName.toWCharArray(convertedName);
convertedName[fileName.length()] = '\0';
HICON Icon = ExtractIcon(NULL, convertedName, 0);
QPixmap pixmap = QPixmap::fromWinHICON(Icon);
return QIcon(pixmap);
}
코드 출력 :
QPixmap::fromWinHICON(), failed to GetIconInfo()
(ExtractIcon
function on MSDN)
여기에 코드입니다.
문제는 내가 함수 대신을 호출하는 응용 프로그램의 인스턴스를 처리하는 대신 NULL을 보내는 것입니다. 하지만 일반적으로 Qt를 사용하며 앱에서 WinAPI 함수가 하나뿐입니다.
무엇이 잘못 되었나요? WinAPI를 사용하여 아이콘을 추출하는 올바른 방법은 무엇입니까? 다른 기능 제안이있는 경우, 예를 들어주십시오. WinAPI를 사용하는 것은 이번이 처음입니다.
업데이트 : 예, 더 좋은 방법이 있습니다. 이런 일을 할 때 QFileIconProvider 클래스를 사용할 수 있습니다.
나는'HICON'을 null이 아닌가? 'GetIconInfo'를 직접 호출하여 오류 결과를 확인하십시오. – Neil
GetIconInfo를 호출하기 전에 @Neil GetLastError()가 오류 1402 "잘못된 커서 핸들"을 반환합니다. - –