packages feed

Clipboard-1.0.0: System/Windows/Clipboard.hs

-- | Operations over the Windows Clipboard.
module System.Windows.Clipboard
   ( setClipboardString
   , getClipboardString
    ) where

import Foreign.Ptr (castPtr,nullPtr)
import Foreign.C.String (newCString,peekCString)
import System.Win32.Types (HANDLE)
import Graphics.Win32.GDI.Clip

setClipboardh :: ClipboardFormat -> HANDLE -> IO ()
setClipboardh f h =
     do openClipboard nullPtr
        emptyClipboard
        setClipboardData f h
        closeClipboard

getClipboardh :: ClipboardFormat -> IO HANDLE
getClipboardh f =
     do openClipboard nullPtr
        h <- getClipboardData f
        closeClipboard
        return h

-- | Set the clipboard content to the given 'String'.
setClipboardString :: String -> IO ()
setClipboardString = (>>= setClipboardh cF_TEXT . castPtr) . newCString

-- | Get the clipboard content as a 'String'.
getClipboardString :: IO String
getClipboardString = getClipboardh cF_TEXT >>= peekCString . castPtr