는 다음 PSDK documentation 내가 (나중에 의심 처음으로 발견 된 것) HIMAGELIST
및 IImageList
유형 사이을 캐스팅 할 수없는거야 무슨 말 포함 겉으로는 간단 (하지만 실제로는 매우 명확하지). 그래서, 나는 다음과 같은 코드를 작성 :SHGetImageList를 올바르게 호출하려면 어떻게해야합니까? 그것과 함께 HIMAGELIST를 검색 할 수 있습니까? 내가 쉘의 공유 이미지 목록을 검사하려고했다
procedure TForm1.FormCreate(Sender: TObject);
const
IID_IImageList: TGUID = '{46EB5926-582E-4017-9FDF-E8998DAA0950}';
IID_IImageList2: TGUID = '{192B9D83-50FC-457B-90A0-2B82A8B5DAE1}';
var
himl: HIMAGELIST;
begin
CoInitialize(nil);
OleCheck(SHGetImageList(SHIL_LARGE, IID_IImageList, Pointer(himl)));
ImageList1.Handle := himl;
end;
을하지만 아주 제대로 작동 : API 호출이 HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER)
반환 한 후 응용 프로그램과 라이브러리 사이에 진 모순을 제안, 다중 접속 위반으로 충돌합니다. 그러나, 나는이 사용했던 기능의 주식 델파이 가져 오기 올바른 같습니다
function SHGetImageList(iImageList: Integer; const riid: TGUID;
var ppvObj: Pointer): HResult;
function SHGetImageList; external shell32 name 'SHGetImageList' delayed;
나는이 문서에서 혼란 발견이 무엇 riid
매개 변수 설명 목록은 하나의 가능한 값이 두 번째입니다 - IID_IImageList
검색 내 의도와 일치하지 않을 수 있습니다 핸들 유형.
그래서 어떻게 SHGetImageList를 제대로 호출 할 수 있습니까? 그리고 HIMAGELIST
을 검색 할 수 있습니까?
오, 나는 이것을 간과했다고 믿을 수 없다! 감사! –