pidl.c
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. /*
  2.  * pidl - PIDLs and diddles
  3.  *
  4.  */
  5. #include "tweakui.h"
  6. #pragma BEGIN_CONST_DATA
  7. #pragma END_CONST_DATA
  8. /*****************************************************************************
  9.  *
  10.  *  pidlFromPath
  11.  *
  12.  * Create a pidl from an psf and a relative path.
  13.  *
  14.  *****************************************************************************/
  15. PIDL PASCAL
  16. pidlFromPath(LPSHELLFOLDER psf, LPCTSTR lqn)
  17. {
  18.     PIDL pidl;
  19.     UnicodeFromPtsz(wsz, lqn);
  20.     if (SUCCEEDED(psf->lpVtbl->ParseDisplayName(psf, 0, 0, wsz, 0, &pidl, 0))) {
  21. return pidl;
  22.     } else {
  23. return 0;
  24.     }
  25. }
  26. /*****************************************************************************
  27.  *
  28.  *  SetNameOfPidl
  29.  *
  30.  * Change a pidl's name.
  31.  *
  32.  *****************************************************************************/
  33. HRESULT PASCAL
  34. SetNameOfPidl(PSF psf, PIDL pidl, LPCTSTR ptszName)
  35. {
  36.     UnicodeFromPtsz(wsz, ptszName);
  37.     return psf->lpVtbl->SetNameOf(psf, 0, pidl, wsz, 0, 0);
  38. }
  39. /*****************************************************************************
  40.  *
  41.  *  ComparePidls
  42.  *
  43.  * Compare two pidls.
  44.  *
  45.  *****************************************************************************/
  46. HRESULT PASCAL
  47. ComparePidls(PIDL pidl1, PIDL pidl2)
  48. {
  49.     return psfDesktop->lpVtbl->CompareIDs(psfDesktop, 0, pidl1, pidl2);
  50. }
  51. /*****************************************************************************
  52.  *
  53.  *  GetSystemImageList
  54.  *
  55.  * Get the large or small image list handle.
  56.  *
  57.  * The dword argument is 0 for the large image list, or
  58.  * SHGFI_SMALLICON for the small image list.
  59.  *
  60.  *****************************************************************************/
  61. HIML PASCAL
  62. GetSystemImageList(DWORD dw)
  63. {
  64.     SHFILEINFO sfi;
  65.     return (HIML)SHGetFileInfo(g_tszPathShell32, FILE_ATTRIBUTE_DIRECTORY,
  66.        &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES |
  67.        SHGFI_SYSICONINDEX | dw);
  68. }