| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # Sample implementation of IFileOperationProgressSink that just prints
- # some basic info
- import pythoncom
- from win32com.shell import shell, shellcon
- from win32com.server.policy import DesignatedWrapPolicy
- class FileOperationProgressSink(DesignatedWrapPolicy):
- _com_interfaces_ = [shell.IID_IFileOperationProgressSink]
- _public_methods_ = [
- "StartOperations",
- "FinishOperations",
- "PreRenameItem",
- "PostRenameItem",
- "PreMoveItem",
- "PostMoveItem",
- "PreCopyItem",
- "PostCopyItem",
- "PreDeleteItem",
- "PostDeleteItem",
- "PreNewItem",
- "PostNewItem",
- "UpdateProgress",
- "ResetTimer",
- "PauseTimer",
- "ResumeTimer",
- ]
- def __init__(self):
- self._wrap_(self)
- self.newItem = None
- def PreDeleteItem(self, flags, item):
- # Can detect cases where to stop via flags and condition below, however the operation
- # does not actual stop, we can resort to raising an exception as that does stop things
- # but that may need some additional considerations before implementing.
- return 0 if flags & shellcon.TSF_DELETE_RECYCLE_IF_POSSIBLE else 0x80004005 # S_OK, or E_FAIL
- def PostDeleteItem(self, flags, item, hr_delete, newly_created):
- if newly_created:
- self.newItem = newly_created.GetDisplayName(shellcon.SHGDN_FORPARSING)
- def create_sink():
- return pythoncom.WrapObject(FileOperationProgressSink(), shell.IID_IFileOperationProgressSink)
|