4

I downloaded the win32 for python 2.6 from this site.

This is the code to get/set the clipboard.

def test():
    OpenClipboard() 
    d=GetClipboardData(win32con.CF_TEXT) # get clipboard data
    SetClipboardData(win32con.CF_TEXT, "Hello") # set clipboard data
    CloseClipboard()

if __name__ == '__main__':
    if sys.platform == 'win32':
        from win32clipboard import *
        import win32gui, win32con
        test()

It works well with GetClipboarData, but SetClipboardData doesn't seem to work, as when I run the test(), I expect to get "hello" with ^V, but something that I copied before.

What might be wrong?

prosseek
  • 169,389
  • 197
  • 542
  • 840

3 Answers3

7

To put data in the clipboard, you want to open the clipboard, then call EmptyClipboard before SetClipboardData.

Jerry Coffin
  • 455,417
  • 76
  • 598
  • 1,067
3

You can also use the pyperclip.py module to avoid requiring the win32 dependency. It's just a single python module that is cross platform, and for Windows it make DLL calls directly:

http://coffeeghost.net/2010/10/09/pyperclip-a-cross-platform-clipboard-module-for-python/

Al S.
  • 331
  • 3
  • 4
1

If it's OK to not use win32 you can use Tkinter in the python standard library, as shown here: How do I copy a string to the clipboard on Windows using Python?

Community
  • 1
  • 1
Buttons840
  • 8,647
  • 15
  • 55
  • 82