lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

I kind of got used to Mac OS X's pbpaste, so decided to give luajit a
try with this operation, instead of going on writing whole ".c"

The following winclip.lua would print the clipboard. There is not much
check going on, but it shows how quickly one can do the things without

-- pbpaste (Mac OS X) program for Windows
-- to run: luajit winclip.lua
-- it should print the clipboard (textual content)
local ffi = require( "ffi" )
local user32, kernel32 = ffi.load( "USER32" ), ffi.load( "KERNEL32" )

enum { CF_TEXT = 1 };
int      OpenClipboard(void*);
void*    GetClipboardData(unsigned);
int      CloseClipboard();
void*    GlobalLock(void*);
int      GlobalUnlock(void*);
size_t   GlobalSize(void*);

local ok1    = user32.OpenClipboard(nil)
local handle = user32.GetClipboardData( user32.CF_TEXT )
local size   = kernel32.GlobalSize( handle )
local mem    = kernel32.GlobalLock( handle )
local text   = ffi.string( mem, size )
local ok2    = kernel32.GlobalUnlock( handle )
local ok3    = user32.CloseClipboard()


Dimiter "malkia" Stanev,
ICQ: 21875894