84 lines
2.1 KiB
Python
84 lines
2.1 KiB
Python
import time
|
|
|
|
import pythoncom
|
|
from win32com.shell import shell, shellcon
|
|
|
|
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
|