addPlace method

void addPlace(
  1. WindowsKnownFolder folder,
  2. Place location
)

Add a known folder to the Quick Access list.

On Windows 11, this may appear under the Application Links node.

Implementation

void addPlace(WindowsKnownFolder folder, Place location) {
  final publicMusicFolder = calloc<GUID>();
  final ppkf = calloc<Pointer<COMObject>>();
  final psi = calloc<Pointer>();
  final riid = convertToIID(IID_IShellItem);

  try {
    final folderGUID = folder.guid;
    final knownFolderManager = KnownFolderManager.createInstance();
    publicMusicFolder.ref.setGUID(folderGUID);
    var hr = knownFolderManager.getFolder(publicMusicFolder, ppkf);
    if (FAILED(hr)) throw WindowsException(hr);

    final knownFolder = IKnownFolder(ppkf.cast());
    hr = knownFolder.getShellItem(0, riid, psi);
    if (FAILED(hr)) throw WindowsException(hr);

    final shellItem = IShellItem(psi.cast());
    final place = CustomPlace(shellItem, location);
    customPlaces.add(place);
  } finally {
    free(publicMusicFolder);
    free(ppkf);
    free(riid);
  }
}