def GetClipboardText(): if not SafeOpenClipboard(): return text = u"" try: hClipMem = GetClipboardData(CF_UNICODETEXT) if hClipMem: text = cast(GlobalLock(hClipMem), c_wchar_p).value GlobalUnlock(hClipMem) else: hClipMem = GetClipboardData(CF_TEXT) if hClipMem: text = cast(GlobalLock(hClipMem), c_char_p).value GlobalUnlock(hClipMem) text = text.decode(eg.systemEncoding) finally: CloseClipboard() # replace CR+LF with \n text = text.replace("\r\n", "\n") return text
def SetClipboardText(text): charBuffer = create_unicode_buffer(text) charBufferSize = sizeof(charBuffer) hGlobalMem = GlobalAlloc(GHND, charBufferSize) lpGlobalMem = GlobalLock(hGlobalMem) memcpy(lpGlobalMem, charBuffer, charBufferSize) GlobalUnlock(hGlobalMem) if not SafeOpenClipboard(): return try: EmptyClipboard() SetClipboardData(CF_UNICODETEXT, hGlobalMem) finally: CloseClipboard()