from win32com.shell import shell, shellcon import pythoncom import time website='https://github.com/mhammond/pywin32/' iad=pythoncom.CoCreateInstance(shell.CLSID_ActiveDesktop, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IActiveDesktop) opts=iad.GetDesktopItemOptions() if not (opts['ActiveDesktop'] and opts['EnableComponents']): print('Warning: Enabling Active Desktop') opts['ActiveDesktop']=True opts['EnableComponents']=True iad.SetDesktopItemOptions(opts) iad.ApplyChanges(0xffff) iad=None ## apparently takes a short while for it to become active time.sleep(2) iad=pythoncom.CoCreateInstance(shell.CLSID_ActiveDesktop, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IActiveDesktop) cnt=iad.GetDesktopItemCount() print('Count:', cnt) for i in range(cnt): print(iad.GetDesktopItem(i)) component={ 'ID': cnt+1, 'ComponentType': shellcon.COMP_TYPE_WEBSITE, 'CurItemState': shellcon.IS_NORMAL, 'SubscribedURL': website, 'Source' : website, 'FriendlyName' : 'Pywin32 on SF', 'Checked' : True, ## this controls whether item is currently displayed 'NoScroll' : False, 'Dirty': False, 'Pos': {'Top':69, 'Left':69, 'Height': 400, 'Width': 400, 'zIndex': 1002, 'CanResize': True, 'CanResizeX': True, 'CanResizeY': True, 'PreferredLeftPercent': 0, 'PreferredTopPercent': 0}, 'Original': {'Top': 33, 'Left': 304, 'Height': 362, 'Width': 372, 'ItemState': shellcon.IS_NORMAL}, 'Restored': {'Top': 33, 'Left': 304, 'Height': 362, 'Width': 372, 'ItemState': shellcon.IS_NORMAL} } try: existing_item=iad.GetDesktopItemBySource(website) except pythoncom.com_error: pass else: iad.RemoveDesktopItem(existing_item) iad.ApplyChanges(0xffff) iad.AddDesktopItem(component) iad.ApplyChanges(0xffff) ## need to check which AD_APPLY constants are actually needed