[python-win32] Files in clipboard with DropEffect?

Mark Hammond skippy.hammond at gmail.com
Fri Dec 11 01:28:54 CET 2009


On 10/12/2009 5:05 PM, Stuart Axon wrote:
> Hi,
>    I made the a script to manipulate files copied into the clipboard from explorer.
> To know if the file was cut or copied it seems need to get information about the DropEffect - is there a way to do this from win32clipboard ?

I think you want to look at pythoncom.OleGetClipboard(), then using the 
IDataObject returned.  IIRC, you will need to query for the clipboard 
format CFSTR_PREFERREDDROPEFFECT and do other non-obvious stuff.

The following code seems to work (although note various errors may be 
raised if what you expect isn't in the clipboard.

Note that you don't need to jump through these hoops when you are the 
"drop target" - the drop target is passed this flag as a param as it is 
dropped.

HTH,

Mark

from win32com.shell import shellcon
import pythoncom
import win32clipboard
import struct

CF_PREFERREDDROPEFFECT = win32clipboard.RegisterClipboardFormat(
                                     shellcon.CFSTR_PREFERREDDROPEFFECT)

data_obj = pythoncom.OleGetClipboard()

# Make a FORMATETC
fe = (CF_PREFERREDDROPEFFECT, None, pythoncom.DVASPECT_CONTENT, -1,
       pythoncom.TYMED_HGLOBAL)
medium = data_obj.GetData(fe)
de = struct.unpack("i", medium.data[:4])[0]
print "Drop effect is", de


More information about the python-win32 mailing list