Q&A

  • Active Desktop Item 가져오기
윈도우즈 바탕화면에 Active Desktop 설정하는 것 있죠.



여러 개의 html 파일을 등록시킬 수도 있고, (IActiveDesktop.AddDesktopItem)

몇개가 등록되어 있나 확인할 수도 있으며, (IActiveDesktop.GetDesktopItemCount)

각각의 Item에 대한 정보를 가져올 수도 있고, (IActiveDesktop.GetDesktopItem)

그외 많은 함수들이 있습니다...





일단은 윈도우즈의 Active Desktop에 있는 Item을 가져오고 싶습니다.

그런데 그게 잘 안됩니다.

함수의 Parameter가 잘못된 것 같은데, 어디가 잘못되었는지 잘 모르겠습니다.



아래 procedure를 한번 실행시켜 보시면,

ActiveDesktop.GetDesktopItem() 함수를 실행시킨 결과

hr값이 자꾸만 에러값으로 return됩니다.





혹시 해결하신 분은 답변 좀 주시면 고맙겠습니다.





uses

ShlObj, ComObj;



procedure TForm1.Button1Click(Sender: TObject);

var

ActiveDesktop: IActiveDesktop;

pcomp: TShComponent;

hr: Hresult;

i, desktopItemCount: integer;

begin

ActiveDesktop:= CreateComObject (CLSID_ActiveDesktop) as IActiveDesktop;

ActiveDesktop.GetDesktopItemCount (desktopItemCount, 0);



for i:= 0 to desktopItemCount-1 do begin

// 레지스트리에 있는 Active Desktop Item의 정보를 가져온다.

hr:= ActiveDesktop.GetDesktopItem (i, pcomp, 0);

// 잘 가져왔는지 결과를 check한다.

if (hr = S_OK) then ShowMessage ('정보를 잘 가져왔습니다.');

if (hr = E_INVALIDARG) then ShowMessage ('GetDesktopItem 함수: One or more arguments are invalid.');

end;

end;





0  COMMENTS