Author: Armin Rigo <[email protected]> Branch: Changeset: r473:26fa00bb3fa1 Date: 2012-06-20 12:37 +0200 http://bitbucket.org/cffi/cffi/changeset/26fa00bb3fa1/
Log: Fixed version, sorry (from Israel Fruchter). diff --git a/demo/winclipboard.py b/demo/winclipboard.py --- a/demo/winclipboard.py +++ b/demo/winclipboard.py @@ -1,3 +1,5 @@ +__author__ = "Israel Fruchter <[email protected]>" + from cffi import FFI ffi = FFI() @@ -10,43 +12,49 @@ typedef char * LPTSTR; typedef HANDLE HGLOBAL; typedef HANDLE LPVOID; - + HWND GetConsoleWindow(void); LPVOID GlobalLock( HGLOBAL hMem ); BOOL GlobalUnlock( HGLOBAL hMem ); HGLOBAL GlobalAlloc(UINT uFlags, SIZE_T dwBytes); - + BOOL OpenClipboard(HWND hWndNewOwner); BOOL CloseClipboard(void); BOOL EmptyClipboard(void); HANDLE SetClipboardData(UINT uFormat, HANDLE hMem); - + void * memcpy(void * s1, void * s2, int n); ''') - + lib = ffi.verify(''' #include <windows.h> ''', libraries=["user32"]) -def PutToClipboard(string): - CF_TEXT=1 +globals().update(lib.__dict__) + +def CopyToClipboard(string): + ''' + use win32 api to copy `string` to the clipboard + ''' + CF_TEXT = 1 GMEM_MOVEABLE = 0x0002 - - hWnd = lib.GetConsoleWindow() + + hWnd = GetConsoleWindow() + + if OpenClipboard(hWnd): + cstring = ffi.new("char[]", string) + size = ffi.sizeof(cstring) + + # make it a moveable memory for other processes + hGlobal = GlobalAlloc(GMEM_MOVEABLE, size) + buffer = GlobalLock(hGlobal) + memcpy(buffer, cstring, size) + GlobalUnlock(hGlobal) + + res = EmptyClipboard() + res = SetClipboardData(CF_TEXT, buffer) - if lib.OpenClipboard(hWnd): - cstring = ffi.new("char[]", string) - - # make it a moveable memory for other processes - hGlobal = lib.GlobalAlloc(GMEM_MOVEABLE, size) - buffer = lib.GlobalLock(hGlobal) - lib.memcpy(buffer, cstring, size) - lib.GlobalUnlock(hGlobal) - - res = lib.EmptyClipboard() - res = lib.SetClipboardData(CF_TEXT, buffer) - - lib.CloseClipboard() - -PutToClipboard("this string from cffi") + CloseClipboard() + +CopyToClipboard("hello world from cffi") _______________________________________________ pypy-commit mailing list [email protected] http://mail.python.org/mailman/listinfo/pypy-commit
