You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/win32comext/shell/demos/IActiveDesktop.py

54 lines
1.8 KiB

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