-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A binding to Windows Win32 API.
--   
--   This library contains direct bindings to the Windows Win32 APIs for
--   Haskell.
@package Win32
@version 2.12.0.0


-- | Exception handling if using unsupported Win32 API.
module System.Win32.Exception.Unsupported
data Unsupported
MissingLibrary :: FilePath -> String -> Unsupported
MissingFunction :: String -> String -> Unsupported
MissingValue :: String -> String -> Unsupported
unsupportedVal :: String -> IO Bool -> String -> a -> a
upgradeWindowsOS :: String -> String
missingLibrary :: FilePath -> Unsupported
missingFunction :: String -> Unsupported
missingValue :: String -> Unsupported
missingWin32Function :: String -> String -> Unsupported
missingWin32Value :: String -> String -> Unsupported
doesn'tSupport :: String
upgradeVista :: String
removed :: String
unsupportedIfNull :: Unsupported -> IO (Ptr a) -> IO (Ptr a)
instance GHC.Show.Show System.Win32.Exception.Unsupported.Unsupported
instance GHC.Exception.Type.Exception System.Win32.Exception.Unsupported.Unsupported


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.Types
type LPTSTR = Ptr TCHAR
type DDWORD = Word64
type UCHAR = CUChar
type WORD = Word16
type LPCWSTR = LPWSTR
type LPCSTR = LPSTR
type LPSTR = Ptr CChar
type LPDWORD = Ptr DWORD
type LPVOID = Ptr ()
type LPCTSTR = LPTSTR
type LPWSTR = Ptr CWchar
type HANDLE = Ptr ()
type ErrCode = DWORD
type ULONG = Word32
type UINT = Word32
type DWORD = Word32
type BYTE = Word8
type LPBOOL = Ptr BOOL
type BOOL = Bool
type Addr = Ptr ()
type SHORT = Int16
type INT = Int32
type ATOM = WORD
type LONG = Int32
type LRESULT = LONG_PTR
type WPARAM = UINT_PTR
type HINSTANCE = Ptr ()
type LONG_PTR = CIntPtr
type LPARAM = LONG_PTR
type LCID = DWORD
type LANGID = WORD
type SortID = WORD
type SubLANGID = WORD
type PrimaryLANGID = WORD
type ULONG_PTR = CUIntPtr
type SIZE_T = ULONG_PTR
type HKEY = ForeignHANDLE
type PKEY = HANDLE
type LPBYTE = Ptr BYTE
type TCHAR = CWchar
type HMODULE = Ptr ()
type LPCTSTR_ = LPCTSTR
type LARGE_INTEGER = Int64
type DWORD32 = Word32
type DWORD64 = Word64
type DWORD_PTR = ULONG_PTR
type USHORT = Word16
type FLOAT = Float
type INT32 = Int32
type INT64 = Int64
type LONG32 = Int32
type LONG64 = Int64
type UINT32 = Word32
type UINT64 = Word64
type ULONG32 = Word32
type ULONG64 = Word64
type INT_PTR = Ptr CInt
type UINT_PTR = Word
type HALF_PTR = Ptr INT32
type MbString = Maybe String
type MbINT = Maybe INT
type MbATOM = Maybe ATOM
type HRESULT = LONG
type PUCHAR = Ptr UCHAR
type MbLPVOID = Maybe LPVOID
type MbLPCSTR = Maybe LPCSTR
type MbLPCTSTR = Maybe LPCTSTR
type ForeignHANDLE = ForeignPtr ()
type MbHANDLE = Maybe HANDLE
type MbHINSTANCE = Maybe HINSTANCE
type MbHMODULE = Maybe HMODULE
try :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String
getLastError :: IO ErrCode
c_maperrno_func :: ErrCode -> IO Errno
nullHANDLE :: HANDLE
iNVALID_HANDLE_VALUE :: HANDLE
failWith :: String -> ErrCode -> IO a
getErrorMessage :: DWORD -> IO LPWSTR
failIf :: (a -> Bool) -> String -> IO a -> IO a
failIf_ :: (a -> Bool) -> String -> IO a -> IO ()
failIfNull :: String -> IO (Ptr a) -> IO (Ptr a)
failIfZero :: (Eq a, Num a) => String -> IO a -> IO a
failIfFalse_ :: String -> IO Bool -> IO ()
failUnlessSuccess :: String -> IO ErrCode -> IO ()
failUnlessSuccessOr :: ErrCode -> String -> IO ErrCode -> IO Bool
ddwordToDwords :: DDWORD -> (DWORD, DWORD)
dwordsToDdword :: (DWORD, DWORD) -> DDWORD
setLastError :: ErrCode -> IO ()
c_get_osfhandle :: CInt -> IO HANDLE
maybePtr :: Maybe (Ptr a) -> Ptr a
newTString :: String -> IO LPCTSTR
withTString :: String -> (LPTSTR -> IO a) -> IO a
ptrToMaybe :: Ptr a -> Maybe (Ptr a)
peekTString :: LPCTSTR -> IO String
numToMaybe :: (Eq a, Num a) => a -> Maybe a
maybeNum :: Num a => Maybe a -> a
errorWin :: String -> IO a
castUINTPtrToPtr :: UINT_PTR -> Ptr a
mAKELCID :: LANGID -> SortID -> LCID
lANGIDFROMLCID :: LCID -> LANGID
sORTIDFROMLCID :: LCID -> SortID
mAKELANGID :: PrimaryLANGID -> SubLANGID -> LANGID
pRIMARYLANGID :: LANGID -> PrimaryLANGID
sUBLANGID :: LANGID -> SubLANGID
peekTStringLen :: (LPCTSTR, Int) -> IO String
newForeignHANDLE :: HANDLE -> IO ForeignHANDLE
withTStringLen :: String -> ((LPTSTR, Int) -> IO a) -> IO a
eRROR_INSUFFICIENT_BUFFER :: ErrCode
deleteObjectFinaliser :: FunPtr (Ptr a -> IO ())
handleToWord :: HANDLE -> UINT_PTR
castPtrToUINTPtr :: Ptr s -> UINT_PTR
nullHINSTANCE :: HINSTANCE
nullFinalHANDLE :: ForeignPtr a
_open_osfhandle :: CIntPtr -> CInt -> IO CInt

-- | Create a Haskell <a>Handle</a> from a Windows <a>HANDLE</a>.
--   
--   Beware that this function allocates a new file descriptor. A
--   consequence of this is that calling <a>hANDLEToHandle</a> on the
--   standard Windows handles will not give you <a>stdin</a>,
--   <a>stdout</a>, or <a>stderr</a>. For example, if you run this code:
--   
--   <pre>
--   import Graphics.Win32.Misc
--   stdoutHANDLE &lt;- getStdHandle sTD_OUTPUT_HANDLE
--   stdout2 &lt;- <a>hANDLEToHandle</a> stdoutHANDLE
--   </pre>
--   
--   Then although you can use <tt>stdout2</tt> to write to standard
--   output, it is not the case that <tt><a>stdout</a> == stdout2</tt>.
hANDLEToHandle :: HANDLE -> IO Handle

-- | Extract a Windows <a>HANDLE</a> from a Haskell <a>Handle</a> and
--   perform an action on it.
withHandleToHANDLE :: Handle -> (HANDLE -> IO a) -> IO a
withHandleToHANDLEPosix :: Handle -> (HANDLE -> IO a) -> IO a
withStablePtr :: a -> (StablePtr a -> IO b) -> IO b
failIfNeg :: (Num a, Ord a) => String -> IO a -> IO a
eRROR_MOD_NOT_FOUND :: ErrCode
eRROR_PROC_NOT_FOUND :: ErrCode
localFree :: Ptr a -> IO (Ptr a)
lOWORD :: DWORD -> WORD
hIWORD :: DWORD -> WORD

-- | The constant <a>nullPtr</a> contains a distinguished value of
--   <a>Ptr</a> that is not associated with a valid memory location.
nullPtr :: Ptr a


-- | Utilities for primitive marshalling of Windows' C strings.
module System.Win32.String
type LPSTR = Ptr CChar
type LPCSTR = LPSTR
type LPWSTR = Ptr CWchar
type LPCWSTR = LPWSTR
type TCHAR = CWchar
type LPTSTR = Ptr TCHAR
type LPCTSTR = LPTSTR
type LPCTSTR_ = LPCTSTR
withTString :: String -> (LPTSTR -> IO a) -> IO a
withTStringLen :: String -> ((LPTSTR, Int) -> IO a) -> IO a
peekTString :: LPCTSTR -> IO String
peekTStringLen :: (LPCTSTR, Int) -> IO String
newTString :: String -> IO LPCTSTR

-- | Marshal a dummy Haskell string into a NUL terminated C wide string
--   using temporary storage.
--   
--   <ul>
--   <li>the Haskell string is created by length parameter. And the Haskell
--   string contains <i>only</i> NUL characters.</li>
--   <li>the memory is freed when the subcomputation terminates (either
--   normally or via an exception), so the pointer to the temporary storage
--   must <i>not</i> be used after this.</li>
--   </ul>
withTStringBuffer :: Int -> (LPTSTR -> IO a) -> IO a

-- | Marshal a dummy Haskell string into a C wide string (i.e. wide
--   character array) in temporary storage, with explicit length
--   information.
--   
--   <ul>
--   <li>the Haskell string is created by length parameter. And the Haskell
--   string contains <i>only</i> NUL characters.</li>
--   <li>the memory is freed when the subcomputation terminates (either
--   normally or via an exception), so the pointer to the temporary storage
--   must <i>not</i> be used after this.</li>
--   </ul>
withTStringBufferLen :: Int -> ((LPTSTR, Int) -> IO a) -> IO a


-- | FFI-bindings to interact with Win32 Security
module System.Win32.Security
data SID
type PSID = Ptr SID
data ACL
type PACL = Ptr ACL
data SECURITY_DESCRIPTOR
type SECURITY_DESCRIPTOR_CONTROL = WORD
se_OWNER_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL
se_GROUP_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL
se_DACL_PRESENT :: SECURITY_DESCRIPTOR_CONTROL
se_DACL_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL
se_SACL_PRESENT :: SECURITY_DESCRIPTOR_CONTROL
se_SACL_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL
se_DACL_AUTO_INHERIT_REQ :: SECURITY_DESCRIPTOR_CONTROL
se_SACL_AUTO_INHERIT_REQ :: SECURITY_DESCRIPTOR_CONTROL
se_DACL_AUTO_INHERITED :: SECURITY_DESCRIPTOR_CONTROL
se_SACL_AUTO_INHERITED :: SECURITY_DESCRIPTOR_CONTROL
se_DACL_PROTECTED :: SECURITY_DESCRIPTOR_CONTROL
se_SACL_PROTECTED :: SECURITY_DESCRIPTOR_CONTROL
se_SELF_RELATIVE :: SECURITY_DESCRIPTOR_CONTROL
type SECURITY_INFORMATION = DWORD
oWNER_SECURITY_INFORMATION :: SECURITY_INFORMATION
gROUP_SECURITY_INFORMATION :: SECURITY_INFORMATION
dACL_SECURITY_INFORMATION :: SECURITY_INFORMATION
sACL_SECURITY_INFORMATION :: SECURITY_INFORMATION
getFileSecurity :: String -> SECURITY_INFORMATION -> IO SecurityDescriptor


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.Mem
data MEMORY_BASIC_INFORMATION
MEMORY_BASIC_INFORMATION :: Addr -> Addr -> DWORD -> SIZE_T -> DWORD -> DWORD -> DWORD -> MEMORY_BASIC_INFORMATION
[mbiBaseAddress] :: MEMORY_BASIC_INFORMATION -> Addr
[mbiAllocationBase] :: MEMORY_BASIC_INFORMATION -> Addr
[mbiAllocationProtect] :: MEMORY_BASIC_INFORMATION -> DWORD
[mbiRegionSize] :: MEMORY_BASIC_INFORMATION -> SIZE_T
[mbiState] :: MEMORY_BASIC_INFORMATION -> DWORD
[mbiProtect] :: MEMORY_BASIC_INFORMATION -> DWORD
[mbiType] :: MEMORY_BASIC_INFORMATION -> DWORD
copyMemory :: Ptr a -> Ptr a -> DWORD -> IO ()
moveMemory :: Ptr a -> Ptr a -> DWORD -> IO ()
fillMemory :: Ptr a -> DWORD -> BYTE -> IO ()
zeroMemory :: Ptr a -> DWORD -> IO ()
memset :: Ptr a -> CInt -> CSize -> IO ()
getProcessHeap :: IO HANDLE
getProcessHeaps :: DWORD -> Addr -> IO DWORD
type HGLOBAL = Addr
type GlobalAllocFlags = UINT
gMEM_INVALID_HANDLE :: GlobalAllocFlags
gMEM_FIXED :: GlobalAllocFlags
gMEM_MOVEABLE :: GlobalAllocFlags
gPTR :: GlobalAllocFlags
gHND :: GlobalAllocFlags
gMEM_DDESHARE :: GlobalAllocFlags
gMEM_SHARE :: GlobalAllocFlags
gMEM_LOWER :: GlobalAllocFlags
gMEM_NOCOMPACT :: GlobalAllocFlags
gMEM_NODISCARD :: GlobalAllocFlags
gMEM_NOT_BANKED :: GlobalAllocFlags
gMEM_NOTIFY :: GlobalAllocFlags
gMEM_ZEROINIT :: GlobalAllocFlags
globalAlloc :: GlobalAllocFlags -> DWORD -> IO HGLOBAL
globalFlags :: HGLOBAL -> IO GlobalAllocFlags
globalFree :: HGLOBAL -> IO HGLOBAL
globalHandle :: Addr -> IO HGLOBAL
globalLock :: HGLOBAL -> IO Addr
globalReAlloc :: HGLOBAL -> DWORD -> GlobalAllocFlags -> IO HGLOBAL
globalSize :: HGLOBAL -> IO DWORD
globalUnlock :: HGLOBAL -> IO ()
type HeapAllocFlags = DWORD
hEAP_GENERATE_EXCEPTIONS :: HeapAllocFlags
hEAP_NO_SERIALIZE :: HeapAllocFlags
hEAP_ZERO_MEMORY :: HeapAllocFlags
heapAlloc :: HANDLE -> HeapAllocFlags -> DWORD -> IO Addr
heapCompact :: HANDLE -> HeapAllocFlags -> IO UINT
heapCreate :: HeapAllocFlags -> DWORD -> DWORD -> IO HANDLE
heapDestroy :: HANDLE -> IO ()
heapFree :: HANDLE -> HeapAllocFlags -> Addr -> IO ()
heapLock :: HANDLE -> IO ()
heapReAlloc :: HANDLE -> HeapAllocFlags -> Addr -> DWORD -> IO Addr
heapSize :: HANDLE -> HeapAllocFlags -> Addr -> IO DWORD
heapUnlock :: HANDLE -> IO ()
heapValidate :: HANDLE -> HeapAllocFlags -> Addr -> IO Bool
virtualAlloc :: Addr -> DWORD -> VirtualAllocFlags -> ProtectFlags -> IO Addr
virtualAllocEx :: HANDLE -> Addr -> DWORD -> VirtualAllocFlags -> ProtectFlags -> IO Addr
type VirtualAllocFlags = DWORD
mEM_COMMIT :: VirtualAllocFlags
mEM_RESERVE :: VirtualAllocFlags
virtualLock :: Addr -> DWORD -> IO ()
virtualUnlock :: Addr -> DWORD -> IO ()
virtualProtect :: Addr -> DWORD -> ProtectFlags -> IO ProtectFlags
virtualProtectEx :: HANDLE -> Addr -> DWORD -> ProtectFlags -> IO ProtectFlags
virtualQueryEx :: HANDLE -> LPVOID -> Ptr MEMORY_BASIC_INFORMATION -> SIZE_T -> IO DWORD
type ProtectFlags = DWORD
pAGE_READONLY :: ProtectFlags
pAGE_READWRITE :: ProtectFlags
pAGE_EXECUTE :: ProtectFlags
pAGE_EXECUTE_READ :: ProtectFlags
pAGE_EXECUTE_READWRITE :: ProtectFlags
pAGE_GUARD :: ProtectFlags
pAGE_NOACCESS :: ProtectFlags
pAGE_NOCACHE :: ProtectFlags
virtualFree :: Addr -> DWORD -> FreeFlags -> IO ()
virtualFreeEx :: HANDLE -> Addr -> DWORD -> FreeFlags -> IO ()
type FreeFlags = DWORD
mEM_DECOMMIT :: FreeFlags
mEM_RELEASE :: FreeFlags
instance GHC.Show.Show System.Win32.Mem.MEMORY_BASIC_INFORMATION
instance Foreign.Storable.Storable System.Win32.Mem.MEMORY_BASIC_INFORMATION


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.Info
type SystemColor = UINT
cOLOR_SCROLLBAR :: SystemColor
cOLOR_BACKGROUND :: SystemColor
cOLOR_ACTIVECAPTION :: SystemColor
cOLOR_INACTIVECAPTION :: SystemColor
cOLOR_MENU :: SystemColor
cOLOR_WINDOW :: SystemColor
cOLOR_WINDOWFRAME :: SystemColor
cOLOR_MENUTEXT :: SystemColor
cOLOR_WINDOWTEXT :: SystemColor
cOLOR_CAPTIONTEXT :: SystemColor
cOLOR_ACTIVEBORDER :: SystemColor
cOLOR_INACTIVEBORDER :: SystemColor
cOLOR_APPWORKSPACE :: SystemColor
cOLOR_HIGHLIGHT :: SystemColor
cOLOR_HIGHLIGHTTEXT :: SystemColor
cOLOR_BTNFACE :: SystemColor
cOLOR_BTNSHADOW :: SystemColor
cOLOR_GRAYTEXT :: SystemColor
cOLOR_BTNTEXT :: SystemColor
cOLOR_INACTIVECAPTIONTEXT :: SystemColor
cOLOR_BTNHIGHLIGHT :: SystemColor
getSystemDirectory :: IO String
getWindowsDirectory :: IO String
getCurrentDirectory :: IO String
getTemporaryDirectory :: IO String
getFullPathName :: FilePath -> IO FilePath
getLongPathName :: FilePath -> IO FilePath
getShortPathName :: FilePath -> IO FilePath
searchPath :: Maybe String -> FilePath -> Maybe String -> IO (Maybe FilePath)
data ProcessorArchitecture
PaUnknown :: WORD -> ProcessorArchitecture
PaIntel :: ProcessorArchitecture
PaMips :: ProcessorArchitecture
PaAlpha :: ProcessorArchitecture
PaPpc :: ProcessorArchitecture
PaIa64 :: ProcessorArchitecture
PaIa32OnIa64 :: ProcessorArchitecture
PaAmd64 :: ProcessorArchitecture
data SYSTEM_INFO
SYSTEM_INFO :: ProcessorArchitecture -> DWORD -> LPVOID -> DWORD -> DWORD -> DWORD -> DWORD -> WORD -> WORD -> SYSTEM_INFO
[siProcessorArchitecture] :: SYSTEM_INFO -> ProcessorArchitecture
[siPageSize] :: SYSTEM_INFO -> DWORD
[siMinimumApplicationAddress, siMaximumApplicationAddress] :: SYSTEM_INFO -> LPVOID
[siActiveProcessorMask] :: SYSTEM_INFO -> DWORD
[siNumberOfProcessors] :: SYSTEM_INFO -> DWORD
[siProcessorType] :: SYSTEM_INFO -> DWORD
[siAllocationGranularity] :: SYSTEM_INFO -> DWORD
[siProcessorLevel] :: SYSTEM_INFO -> WORD
[siProcessorRevision] :: SYSTEM_INFO -> WORD
getSystemInfo :: IO SYSTEM_INFO
type SMSetting = UINT
sM_ARRANGE :: SMSetting
sM_CLEANBOOT :: SMSetting
sM_CMETRICS :: SMSetting
sM_CMOUSEBUTTONS :: SMSetting
sM_CXBORDER :: SMSetting
sM_CYBORDER :: SMSetting
sM_CXCURSOR :: SMSetting
sM_CYCURSOR :: SMSetting
sM_CXDLGFRAME :: SMSetting
sM_CYDLGFRAME :: SMSetting
sM_CXDOUBLECLK :: SMSetting
sM_CYDOUBLECLK :: SMSetting
sM_CXDRAG :: SMSetting
sM_CYDRAG :: SMSetting
sM_CXEDGE :: SMSetting
sM_CYEDGE :: SMSetting
sM_CXFRAME :: SMSetting
sM_CYFRAME :: SMSetting
sM_CXFULLSCREEN :: SMSetting
sM_CYFULLSCREEN :: SMSetting
sM_CXHSCROLL :: SMSetting
sM_CYVSCROLL :: SMSetting
sM_CXICON :: SMSetting
sM_CYICON :: SMSetting
sM_CXICONSPACING :: SMSetting
sM_CYICONSPACING :: SMSetting
sM_CXMAXIMIZED :: SMSetting
sM_CYMAXIMIZED :: SMSetting
sM_CXMENUCHECK :: SMSetting
sM_CYMENUCHECK :: SMSetting
sM_CXMENUSIZE :: SMSetting
sM_CYMENUSIZE :: SMSetting
sM_CXMIN :: SMSetting
sM_CYMIN :: SMSetting
sM_CXMINIMIZED :: SMSetting
sM_CYMINIMIZED :: SMSetting
sM_CXMINTRACK :: SMSetting
sM_CYMINTRACK :: SMSetting
sM_CXSCREEN :: SMSetting
sM_CYSCREEN :: SMSetting
sM_CXSIZE :: SMSetting
sM_CYSIZE :: SMSetting
sM_CXSIZEFRAME :: SMSetting
sM_CYSIZEFRAME :: SMSetting
sM_CXSMICON :: SMSetting
sM_CYSMICON :: SMSetting
sM_CXSMSIZE :: SMSetting
sM_CYSMSIZE :: SMSetting
sM_CXVSCROLL :: SMSetting
sM_CYHSCROLL :: SMSetting
sM_CYVTHUMB :: SMSetting
sM_CYCAPTION :: SMSetting
sM_CYKANJIWINDOW :: SMSetting
sM_CYMENU :: SMSetting
sM_CYSMCAPTION :: SMSetting
sM_DBCSENABLED :: SMSetting
sM_DEBUG :: SMSetting
sM_MENUDROPALIGNMENT :: SMSetting
sM_MIDEASTENABLED :: SMSetting
sM_MOUSEPRESENT :: SMSetting
sM_NETWORK :: SMSetting
sM_PENWINDOWS :: SMSetting
sM_SECURE :: SMSetting
sM_SHOWSOUNDS :: SMSetting
sM_SLOWMACHINE :: SMSetting
sM_SWAPBUTTON :: SMSetting
getUserName :: IO String
instance GHC.Classes.Eq System.Win32.Info.ProcessorArchitecture
instance GHC.Show.Show System.Win32.Info.ProcessorArchitecture
instance GHC.Show.Show System.Win32.Info.SYSTEM_INFO
instance Foreign.Storable.Storable System.Win32.Info.SYSTEM_INFO
instance Foreign.Storable.Storable System.Win32.Info.ProcessorArchitecture


-- | A collection of FFI declarations for using Windows DebugApi.
module System.Win32.DebugApi
type PID = DWORD
type TID = DWORD
type DebugEventId = (PID, TID)
type ForeignAddress = Word32
type PHANDLE = Ptr ()
type THANDLE = Ptr ()
type ThreadInfo = (THANDLE, ForeignAddress, ForeignAddress)
type ImageInfo = (HANDLE, ForeignAddress, DWORD, DWORD, ForeignAddress)
type ExceptionInfo = (Bool, Bool, ForeignAddress)
data Exception
UnknownException :: Exception
AccessViolation :: Bool -> ForeignAddress -> Exception
ArrayBoundsExceeded :: Exception
Breakpoint :: Exception
DataTypeMisalignment :: Exception
FltDenormalOperand :: Exception
FltDivideByZero :: Exception
FltInexactResult :: Exception
FltInvalidOperation :: Exception
FltOverflow :: Exception
FltStackCheck :: Exception
FltUnderflow :: Exception
IllegalInstruction :: Exception
InPageError :: Exception
IntDivideByZero :: Exception
IntOverflow :: Exception
InvalidDisposition :: Exception
NonContinuable :: Exception
PrivilegedInstruction :: Exception
SingleStep :: Exception
StackOverflow :: Exception
data DebugEventInfo
UnknownDebugEvent :: DebugEventInfo
Exception :: ExceptionInfo -> Exception -> DebugEventInfo
CreateThread :: ThreadInfo -> DebugEventInfo
CreateProcess :: PHANDLE -> ImageInfo -> ThreadInfo -> DebugEventInfo
ExitThread :: TID -> DebugEventInfo
ExitProcess :: PID -> DebugEventInfo
LoadDll :: ImageInfo -> DebugEventInfo
UnloadDll :: TID -> DebugEventInfo
DebugString :: ForeignAddress -> Bool -> WORD -> DebugEventInfo
type DebugEvent = (DebugEventId, DebugEventInfo)
debugBreak :: IO ()
isDebuggerPresent :: IO BOOL
waitForDebugEvent :: Maybe Int -> IO (Maybe DebugEvent)
getDebugEvents :: Int -> IO [DebugEvent]
continueDebugEvent :: DebugEventId -> Bool -> IO ()
debugActiveProcess :: PID -> IO ()
peekProcessMemory :: PHANDLE -> ForeignAddress -> Int -> Ptr a -> IO ()
readProcessMemory :: PHANDLE -> ForeignAddress -> Int -> IO (ForeignPtr a)
pokeProcessMemory :: PHANDLE -> ForeignAddress -> Int -> Ptr a -> IO ()
withProcessMemory :: PHANDLE -> ForeignAddress -> Int -> (Ptr a -> IO b) -> IO b
peekP :: Storable a => PHANDLE -> ForeignAddress -> IO a
pokeP :: Storable a => PHANDLE -> ForeignAddress -> a -> IO ()
suspendThread :: THANDLE -> IO DWORD
resumeThread :: THANDLE -> IO DWORD
withSuspendedThread :: THANDLE -> IO a -> IO a
getThreadContext :: THANDLE -> Ptr a -> IO ()
setThreadContext :: THANDLE -> Ptr a -> IO ()
useAllRegs :: Ptr a -> IO ()
withThreadContext :: THANDLE -> (Ptr a -> IO b) -> IO b
rax :: Int
rbx :: Int
rcx :: Int
rdx :: Int
rsi :: Int
rdi :: Int
rbp :: Int
rip :: Int
rsp :: Int
segCs :: Int
segDs :: Int
segEs :: Int
segFs :: Int
segGs :: Int
eFlags :: Int
dr :: Int -> Int
setReg :: Ptr a -> Int -> DWORD -> IO ()
getReg :: Ptr a -> Int -> IO DWORD
modReg :: Ptr a -> Int -> (DWORD -> DWORD) -> IO DWORD
makeModThreadContext :: [(Int, DWORD -> DWORD)] -> Ptr a -> IO [DWORD]
modifyThreadContext :: THANDLE -> [(Int, DWORD -> DWORD)] -> IO [DWORD]
outputDebugString :: String -> IO ()
instance GHC.Show.Show System.Win32.DebugApi.Exception
instance GHC.Show.Show System.Win32.DebugApi.DebugEventInfo


-- | This modules provides just thread control APIs. This modules doesn't
--   provide thread register control APIs. Because these APIs are used for
--   Debugging.
module System.Win32.Thread
type THANDLE = Ptr ()
type TID = DWORD
getCurrentThread :: IO THANDLE
suspendThread :: THANDLE -> IO DWORD
resumeThread :: THANDLE -> IO DWORD
withSuspendedThread :: THANDLE -> IO a -> IO a
getThreadId :: THANDLE -> IO TID
getCurrentThreadId :: IO TID


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.DLL
disableThreadLibraryCalls :: HMODULE -> IO ()
freeLibrary :: HMODULE -> IO ()
getModuleFileName :: HMODULE -> IO String
getModuleHandle :: Maybe String -> IO HMODULE
getProcAddress :: HMODULE -> String -> IO Addr
loadLibrary :: String -> IO HINSTANCE
loadLibraryEx :: String -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE
setDllDirectory :: Maybe String -> IO ()
type LoadLibraryFlags = DWORD
lOAD_LIBRARY_AS_DATAFILE :: LoadLibraryFlags
lOAD_WITH_ALTERED_SEARCH_PATH :: LoadLibraryFlags


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Resource
beginUpdateResource :: String -> Bool -> IO HANDLE
c_BeginUpdateResource :: LPCTSTR -> Bool -> IO HANDLE
type ResourceImageType = UINT
type HRSRC = Ptr ()
type HGLOBAL = Ptr ()
iMAGE_BITMAP :: ResourceImageType
iMAGE_ICON :: ResourceImageType
iMAGE_CURSOR :: ResourceImageType
copyImage :: HANDLE -> ResourceImageType -> Int -> Int -> UINT -> IO HANDLE
c_CopyImage :: HANDLE -> ResourceImageType -> Int -> Int -> UINT -> IO HANDLE
endUpdateResource :: HANDLE -> BOOL -> IO ()
c_EndUpdateResource :: HANDLE -> BOOL -> IO Bool
type ResourceType = LPCTSTR
rT_ACCELERATOR :: ResourceType
rT_ANICURSOR :: ResourceType
rT_ANIICON :: ResourceType
rT_BITMAP :: ResourceType
rT_CURSOR :: ResourceType
rT_DIALOG :: ResourceType
rT_FONT :: ResourceType
rT_FONTDIR :: ResourceType
rT_GROUP_CURSOR :: ResourceType
rT_GROUP_ICON :: ResourceType
rT_HTML :: ResourceType
findResource :: HMODULE -> String -> ResourceType -> IO HRSRC
rT_ICON :: ResourceType
rT_MENU :: ResourceType
c_FindResource :: HMODULE -> LPCTSTR -> LPCTSTR -> IO HRSRC
rT_MESSAGETABLE :: ResourceType
rT_RCDATA :: ResourceType
findResourceEx :: HMODULE -> String -> ResourceType -> WORD -> IO HRSRC
rT_STRING :: ResourceType
rT_VERSION :: ResourceType
c_FindResourceEx :: HMODULE -> LPCTSTR -> LPCTSTR -> WORD -> IO HRSRC
type ResourceSize = Int
lR_DEFAULTSIZE :: ResourceSize
type LoadImageFlags = UINT
lR_DEFAULTCOLOR :: LoadImageFlags
lR_CREATEDIBSECTION :: LoadImageFlags
lR_LOADFROMFILE :: LoadImageFlags
lR_LOADMAP3DCOLORS :: LoadImageFlags
lR_LOADTRANSPARENT :: LoadImageFlags
lR_MONOCHROME :: LoadImageFlags
lR_SHARED :: LoadImageFlags
loadImage :: HINSTANCE -> String -> ResourceImageType -> ResourceSize -> ResourceSize -> LoadImageFlags -> IO HANDLE
c_LoadImage :: HINSTANCE -> LPCTSTR -> ResourceImageType -> ResourceSize -> ResourceSize -> LoadImageFlags -> IO HANDLE
loadResource :: HMODULE -> HRSRC -> IO HGLOBAL
c_LoadResource :: HMODULE -> HRSRC -> IO HGLOBAL
lockResource :: HGLOBAL -> IO Addr
c_LockResource :: HGLOBAL -> IO Addr
sizeofResource :: HMODULE -> HRSRC -> IO DWORD
c_SizeofResource :: HMODULE -> HRSRC -> IO DWORD
updateResource :: HANDLE -> ResourceType -> String -> WORD -> Addr -> DWORD -> IO ()
c_UpdateResource :: HANDLE -> LPCTSTR -> LPCTSTR -> WORD -> Addr -> DWORD -> IO Bool


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Message
type WindowMessage = DWORD
wM_COMPACTING :: WindowMessage
wM_WININICHANGE :: WindowMessage
wM_SYSCOLORCHANGE :: WindowMessage
wM_QUERYNEWPALETTE :: WindowMessage
wM_PALETTEISCHANGING :: WindowMessage
wM_PALETTECHANGED :: WindowMessage
wM_FONTCHANGE :: WindowMessage
wM_SPOOLERSTATUS :: WindowMessage
wM_DEVMODECHANGE :: WindowMessage
wM_TIMECHANGE :: WindowMessage
wM_POWER :: WindowMessage
wM_QUERYENDSESSION :: WindowMessage
wM_ENDSESSION :: WindowMessage
wM_QUIT :: WindowMessage
wM_CREATE :: WindowMessage
wM_NCCREATE :: WindowMessage
wM_DESTROY :: WindowMessage
wM_NCDESTROY :: WindowMessage
wM_SHOWWINDOW :: WindowMessage
wM_SETREDRAW :: WindowMessage
wM_ENABLE :: WindowMessage
wM_SETTEXT :: WindowMessage
wM_GETTEXT :: WindowMessage
wM_GETTEXTLENGTH :: WindowMessage
wM_WINDOWPOSCHANGING :: WindowMessage
wM_WINDOWPOSCHANGED :: WindowMessage
wM_MOVE :: WindowMessage
wM_SIZE :: WindowMessage
wM_QUERYOPEN :: WindowMessage
wM_CLOSE :: WindowMessage
wM_GETMINMAXINFO :: WindowMessage
wM_PAINT :: WindowMessage
wM_ERASEBKGND :: WindowMessage
wM_ICONERASEBKGND :: WindowMessage
wM_NCPAINT :: WindowMessage
wM_NCCALCSIZE :: WindowMessage
wM_QUERYDRAGICON :: WindowMessage
wM_DROPFILES :: WindowMessage
wM_ACTIVATE :: WindowMessage
wM_ACTIVATEAPP :: WindowMessage
wM_NCACTIVATE :: WindowMessage
wM_SETFOCUS :: WindowMessage
wM_KILLFOCUS :: WindowMessage
wM_KEYDOWN :: WindowMessage
wM_KEYUP :: WindowMessage
wM_CHAR :: WindowMessage
wM_DEADCHAR :: WindowMessage
wM_SYSKEYDOWN :: WindowMessage
wM_SYSKEYUP :: WindowMessage
wM_SYSCHAR :: WindowMessage
wM_SYSDEADCHAR :: WindowMessage
wM_KEYFIRST :: WindowMessage
wM_KEYLAST :: WindowMessage
wM_MOUSEMOVE :: WindowMessage
wM_LBUTTONDOWN :: WindowMessage
wM_LBUTTONUP :: WindowMessage
wM_LBUTTONDBLCLK :: WindowMessage
wM_RBUTTONDOWN :: WindowMessage
wM_RBUTTONUP :: WindowMessage
wM_RBUTTONDBLCLK :: WindowMessage
wM_MBUTTONDOWN :: WindowMessage
wM_MBUTTONUP :: WindowMessage
wM_MBUTTONDBLCLK :: WindowMessage
wM_MOUSEFIRST :: WindowMessage
wM_MOUSELAST :: WindowMessage
wM_NCMOUSEMOVE :: WindowMessage
wM_NCLBUTTONDOWN :: WindowMessage
wM_NCLBUTTONUP :: WindowMessage
wM_NCLBUTTONDBLCLK :: WindowMessage
wM_NCRBUTTONDOWN :: WindowMessage
wM_NCRBUTTONUP :: WindowMessage
wM_NCRBUTTONDBLCLK :: WindowMessage
wM_NCMBUTTONDOWN :: WindowMessage
wM_NCMBUTTONUP :: WindowMessage
wM_NCMBUTTONDBLCLK :: WindowMessage
wM_MOUSEACTIVATE :: WindowMessage
wM_CANCELMODE :: WindowMessage
wM_TIMER :: WindowMessage
wM_INITMENU :: WindowMessage
wM_INITMENUPOPUP :: WindowMessage
wM_MENUSELECT :: WindowMessage
wM_MENUCHAR :: WindowMessage
wM_COMMAND :: WindowMessage
wM_HSCROLL :: WindowMessage
wM_VSCROLL :: WindowMessage
wM_CUT :: WindowMessage
wM_COPY :: WindowMessage
wM_PASTE :: WindowMessage
wM_CLEAR :: WindowMessage
wM_UNDO :: WindowMessage
wM_RENDERFORMAT :: WindowMessage
wM_RENDERALLFORMATS :: WindowMessage
wM_DESTROYCLIPBOARD :: WindowMessage
wM_DRAWCLIPBOARD :: WindowMessage
wM_PAINTCLIPBOARD :: WindowMessage
wM_SIZECLIPBOARD :: WindowMessage
wM_VSCROLLCLIPBOARD :: WindowMessage
wM_HSCROLLCLIPBOARD :: WindowMessage
wM_ASKCBFORMATNAME :: WindowMessage
wM_CHANGECBCHAIN :: WindowMessage
wM_SETCURSOR :: WindowMessage
wM_SYSCOMMAND :: WindowMessage
wM_MDICREATE :: WindowMessage
wM_MDIDESTROY :: WindowMessage
wM_MDIACTIVATE :: WindowMessage
wM_MDIRESTORE :: WindowMessage
wM_MDINEXT :: WindowMessage
wM_MDIMAXIMIZE :: WindowMessage
wM_MDITILE :: WindowMessage
wM_MDICASCADE :: WindowMessage
wM_MDIICONARRANGE :: WindowMessage
wM_MDIGETACTIVE :: WindowMessage
wM_MDISETMENU :: WindowMessage
wM_CHILDACTIVATE :: WindowMessage
wM_INITDIALOG :: WindowMessage
wM_NEXTDLGCTL :: WindowMessage
wM_PARENTNOTIFY :: WindowMessage
wM_ENTERIDLE :: WindowMessage
wM_GETDLGCODE :: WindowMessage
wM_SETFONT :: WindowMessage
wM_GETFONT :: WindowMessage
wM_DRAWITEM :: WindowMessage
wM_MEASUREITEM :: WindowMessage
wM_DELETEITEM :: WindowMessage
wM_COMPAREITEM :: WindowMessage
wM_VKEYTOITEM :: WindowMessage
wM_CHARTOITEM :: WindowMessage
wM_QUEUESYNC :: WindowMessage
wM_USER :: WindowMessage
wM_APP :: WindowMessage
registerWindowMessage :: String -> IO WindowMessage
c_RegisterWindowMessage :: LPCTSTR -> IO WindowMessage
sIZE_RESTORED :: WPARAM
sIZE_MINIMIZED :: WPARAM
sIZE_MAXIMIZED :: WPARAM
sIZE_MAXSHOW :: WPARAM
sIZE_MAXHIDE :: WPARAM


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Types
type POINT = (LONG, LONG)
sizeofPOINT :: Int
allocaPOINT :: (Ptr POINT -> IO a) -> IO a
peekPOINT :: Ptr POINT -> IO POINT
pokePOINT :: Ptr POINT -> POINT -> IO ()
withPOINT :: POINT -> (Ptr POINT -> IO a) -> IO a
type RECT = (LONG, LONG, LONG, LONG)
allocaRECT :: (Ptr RECT -> IO a) -> IO a
peekRECT :: Ptr RECT -> IO RECT
pokeRECT :: Ptr RECT -> RECT -> IO ()
type SIZE = (LONG, LONG)
allocaSIZE :: (Ptr SIZE -> IO a) -> IO a
peekSIZE :: Ptr SIZE -> IO SIZE
pokeSIZE :: Ptr SIZE -> SIZE -> IO ()
withPOINTArray :: [POINT] -> (Ptr POINT -> Int -> IO a) -> IO a
pokePOINTArray :: Ptr POINT -> [POINT] -> IO ()
setPOINT :: Ptr POINT -> Int -> POINT -> IO ()
type LPRECT = Ptr RECT
type MbLPRECT = Maybe LPRECT
withRECT :: RECT -> (Ptr RECT -> IO a) -> IO a
getRECT :: LPRECT -> IO RECT
type HBITMAP = HANDLE
type MbHBITMAP = Maybe HBITMAP
type HFONT = HANDLE
type MbHFONT = Maybe HFONT
type HCURSOR = HICON
type MbHCURSOR = Maybe HCURSOR
type HICON = HANDLE
type MbHICON = Maybe HICON
type HRGN = ForeignHANDLE
type PRGN = HANDLE
type MbHRGN = Maybe HRGN
type HPALETTE = HANDLE
type MbHPALETTE = Maybe HPALETTE
type HBRUSH = HANDLE
type MbHBRUSH = Maybe HBRUSH
type HPEN = HANDLE
type MbHPEN = Maybe HPEN
type HACCEL = HANDLE
type HDC = HANDLE
type MbHDC = Maybe HDC
type HDWP = HANDLE
type MbHDWP = Maybe HDWP
type HWND = HANDLE
type MbHWND = Maybe HWND
hWND_BOTTOM :: HWND
hWND_NOTOPMOST :: HWND
hWND_TOP :: HWND
hWND_TOPMOST :: HWND
type HMENU = HANDLE
type MbHMENU = Maybe HMENU
type COLORREF = Word32
rgb :: BYTE -> BYTE -> BYTE -> COLORREF
getRValue :: COLORREF -> BYTE
getGValue :: COLORREF -> BYTE
getBValue :: COLORREF -> BYTE
pALETTERGB :: BYTE -> BYTE -> BYTE -> COLORREF
pALETTEINDEX :: WORD -> COLORREF
type RasterOp3 = Word32
type RasterOp4 = Word32
mAKEROP4 :: RasterOp3 -> RasterOp3 -> RasterOp4
type PolyFillMode = INT
aLTERNATE :: PolyFillMode
wINDING :: PolyFillMode
type ArcDirection = INT
type MbArcDirection = Maybe ArcDirection
aD_COUNTERCLOCKWISE :: ArcDirection
aD_CLOCKWISE :: ArcDirection
type GraphicsMode = DWORD
type MbGraphicsMode = Maybe GraphicsMode
gM_COMPATIBLE :: GraphicsMode
gM_ADVANCED :: GraphicsMode
type BackgroundMode = INT
tRANSPARENT :: BackgroundMode
oPAQUE :: BackgroundMode
type HatchStyle = INT
hS_HORIZONTAL :: HatchStyle
hS_VERTICAL :: HatchStyle
hS_FDIAGONAL :: HatchStyle
hS_BDIAGONAL :: HatchStyle
hS_CROSS :: HatchStyle
hS_DIAGCROSS :: HatchStyle
type StretchBltMode = INT
bLACKONWHITE :: StretchBltMode
wHITEONBLACK :: StretchBltMode
cOLORONCOLOR :: StretchBltMode
hALFTONE :: StretchBltMode
sTRETCH_ANDSCANS :: StretchBltMode
sTRETCH_ORSCANS :: StretchBltMode
type TextAlignment = UINT
sTRETCH_DELETESCANS :: StretchBltMode
tA_NOUPDATECP :: TextAlignment
tA_UPDATECP :: TextAlignment
tA_LEFT :: TextAlignment
tA_RIGHT :: TextAlignment
tA_CENTER :: TextAlignment
tA_TOP :: TextAlignment
tA_BOTTOM :: TextAlignment
type ClippingMode = INT
rGN_AND :: ClippingMode
tA_BASELINE :: TextAlignment
rGN_OR :: ClippingMode
rGN_XOR :: ClippingMode
rGN_DIFF :: ClippingMode
rGN_COPY :: ClippingMode
type RegionType = INT
eRROR :: RegionType
nULLREGION :: RegionType
sIMPLEREGION :: RegionType
cOMPLEXREGION :: RegionType
gDI_ERROR :: Num a => a
cLR_INVALID :: COLORREF
oBJ_PEN :: UINT
oBJ_BRUSH :: UINT
oBJ_DC :: UINT
oBJ_METADC :: UINT
oBJ_PAL :: UINT
oBJ_FONT :: UINT
oBJ_BITMAP :: UINT
oBJ_REGION :: UINT
oBJ_METAFILE :: UINT
oBJ_MEMDC :: UINT
oBJ_EXTPEN :: UINT
oBJ_ENHMETADC :: UINT
prim_ChildWindowFromPoint :: HWND -> Ptr POINT -> IO HWND
oBJ_ENHMETAFILE :: UINT
prim_ChildWindowFromPointEx :: HWND -> Ptr POINT -> DWORD -> IO HWND
prim_MenuItemFromPoint :: HWND -> HMENU -> Ptr POINT -> IO UINT


-- | FFI-bindings to interact with SimpleMAPI
module System.Win32.SimpleMAPI
type ULONG = DWORD
type LHANDLE = ULONG
newtype MapiRecipDesc
MapiRecipDesc :: () -> MapiRecipDesc
type MapiFlag = ULONG
mAPI_LOGON_UI :: MapiFlag
mAPI_NEW_SESSION :: MapiFlag
mAPI_FORCE_DOWNLOAD :: MapiFlag
mAPI_DIALOG :: MapiFlag
mAPI_UNREAD_ONLY :: MapiFlag
mAPI_LONG_MSGID :: MapiFlag
mAPI_GUARANTEE_FIFO :: MapiFlag
mAPI_ENVELOPE_ONLY :: MapiFlag
mAPI_PEEK :: MapiFlag
mAPI_BODY_AS_FILE :: MapiFlag
mAPI_SUPPRESS_ATTACH :: MapiFlag
mAPI_AB_NOMODIFY :: MapiFlag
mAPI_OLE :: MapiFlag
mAPI_OLE_STATIC :: MapiFlag
mAPI_UNREAD :: MapiFlag
mAPI_RECEIPT_REQUESTED :: MapiFlag
mAPI_SENT :: MapiFlag
mapiErrors :: [(ULONG, String)]
mapiErrorString :: ULONG -> String
mapiFail :: String -> IO ULONG -> IO ULONG
mapiFail_ :: String -> IO ULONG -> IO ()
type MapiLogonType = ULONG -> LPSTR -> LPSTR -> MapiFlag -> ULONG -> Ptr LHANDLE -> IO ULONG
mkMapiLogon :: FunPtr MapiLogonType -> MapiLogonType
type MapiLogoffType = LHANDLE -> ULONG -> MapiFlag -> ULONG -> IO ULONG
mkMapiLogoff :: FunPtr MapiLogoffType -> MapiLogoffType
type MapiResolveNameType = LHANDLE -> ULONG -> LPSTR -> MapiFlag -> ULONG -> Ptr (Ptr MapiRecipDesc) -> IO ULONG
mkMapiResolveName :: FunPtr MapiResolveNameType -> MapiResolveNameType
type MapiFreeBufferType = Ptr () -> IO ULONG
mkMapiFreeBuffer :: FunPtr MapiFreeBufferType -> MapiFreeBufferType
type MapiSendMailType = LHANDLE -> ULONG -> Ptr Message -> MapiFlag -> ULONG -> IO ULONG
mkMapiSendMail :: FunPtr MapiSendMailType -> MapiSendMailType
data MapiFuncs
MapiFuncs :: MapiLogonType -> MapiLogoffType -> MapiResolveNameType -> MapiFreeBufferType -> MapiSendMailType -> MapiFuncs
[mapifLogon] :: MapiFuncs -> MapiLogonType
[mapifLogoff] :: MapiFuncs -> MapiLogoffType
[mapifResolveName] :: MapiFuncs -> MapiResolveNameType
[mapifFreeBuffer] :: MapiFuncs -> MapiFreeBufferType
[mapifSendMail] :: MapiFuncs -> MapiSendMailType
type MapiLoaded = (MapiFuncs, ForeignPtr ())

loadMapiFuncs :: String -> HMODULE -> IO MapiFuncs

loadMapiDll :: String -> IO (MapiFuncs, HMODULE)

withMapiFuncs :: [String] -> (MapiFuncs -> IO a) -> IO a

loadMapi :: [String] -> IO MapiLoaded
c_FreeLibraryFinaliser :: FunPtr (HMODULE -> IO ())

withMapiLoaded :: MapiLoaded -> (MapiFuncs -> IO a) -> IO a
maybeHWND :: Maybe HWND -> ULONG

-- | Create Simple MAPI-session by logon
mapiLogon :: MapiFuncs -> Maybe HWND -> Maybe String -> Maybe String -> MapiFlag -> IO LHANDLE

-- | End Simple MAPI-session
mapiLogoff :: MapiFuncs -> LHANDLE -> Maybe HWND -> IO ()
data RecipientClass
RcOriginal :: RecipientClass
RcTo :: RecipientClass
RcCc :: RecipientClass
RcBcc :: RecipientClass
rcToULONG :: RecipientClass -> ULONG
uLONGToRc :: ULONG -> RecipientClass
data Recipient
RecipResolve :: Maybe HWND -> MapiFlag -> String -> Maybe Recipient -> Recipient
Recip :: String -> String -> Recipient
type Recipients = [(RecipientClass, Recipient)]
simpleRecip :: String -> Recipient
withRecipient :: MapiFuncs -> LHANDLE -> RecipientClass -> Recipient -> (Ptr MapiRecipDesc -> IO a) -> IO a
withRecipients :: MapiFuncs -> LHANDLE -> Recipients -> (Int -> Ptr MapiRecipDesc -> IO a) -> IO a
data FileTag
FileTag :: Maybe String -> Maybe String -> FileTag

-- | mime
[ftTag] :: FileTag -> Maybe String
[ftEncoding] :: FileTag -> Maybe String
defFileTag :: FileTag
withFileTag :: FileTag -> (Ptr FileTag -> IO a) -> IO a
data Attachment
Attachment :: MapiFlag -> Maybe ULONG -> String -> Maybe String -> Maybe FileTag -> Attachment
[attFlag] :: Attachment -> MapiFlag
[attPosition] :: Attachment -> Maybe ULONG
[attPath] :: Attachment -> String
[attName] :: Attachment -> Maybe String
[attTag] :: Attachment -> Maybe FileTag
defAttachment :: Attachment
type Attachments = [Attachment]
withAttachments :: Attachments -> (Int -> Ptr Attachment -> IO a) -> IO a
data Message
Message :: String -> String -> Maybe String -> Maybe String -> Maybe String -> MapiFlag -> Maybe Recipient -> Recipients -> Attachments -> Message
[msgSubject] :: Message -> String
[msgBody] :: Message -> String
[msgType] :: Message -> Maybe String
[msgDate] :: Message -> Maybe String
[msgConversationId] :: Message -> Maybe String
[msgFlags] :: Message -> MapiFlag
[msgFrom] :: Message -> Maybe Recipient
[msgRecips] :: Message -> Recipients
[msgAttachments] :: Message -> Attachments
defMessage :: Message
withMessage :: MapiFuncs -> LHANDLE -> Message -> (Ptr Message -> IO a) -> IO a
mapiSendMail :: MapiFuncs -> LHANDLE -> Maybe HWND -> Message -> MapiFlag -> IO ()
handleIOException :: (IOException -> IO a) -> IO a -> IO a
instance GHC.Enum.Enum System.Win32.SimpleMAPI.RecipientClass
instance GHC.Classes.Ord System.Win32.SimpleMAPI.RecipientClass
instance GHC.Classes.Eq System.Win32.SimpleMAPI.RecipientClass
instance GHC.Show.Show System.Win32.SimpleMAPI.RecipientClass
instance GHC.Show.Show System.Win32.SimpleMAPI.Recipient
instance GHC.Show.Show System.Win32.SimpleMAPI.FileTag
instance GHC.Show.Show System.Win32.SimpleMAPI.Attachment
instance GHC.Show.Show System.Win32.SimpleMAPI.Message


-- | Win32 stuff from shell32.dll
module System.Win32.Shell
sHGetFolderPath :: HWND -> CSIDL -> HANDLE -> SHGetFolderPathFlags -> IO String
type CSIDL = CInt
cSIDL_PROFILE :: CSIDL
cSIDL_APPDATA :: CSIDL
cSIDL_WINDOWS :: CSIDL
cSIDL_PERSONAL :: CSIDL
cSIDL_LOCAL_APPDATA :: CSIDL
cSIDL_DESKTOPDIRECTORY :: CSIDL
cSIDL_PROGRAM_FILES :: CSIDL
type SHGetFolderPathFlags = DWORD
sHGFP_TYPE_CURRENT :: SHGetFolderPathFlags
sHGFP_TYPE_DEFAULT :: SHGetFolderPathFlags


-- | Provide PostMessage function and friends.
module Graphics.Win32.Window.PostMessage
postMessage :: MbHWND -> WindowMessage -> WPARAM -> LPARAM -> IO ()
c_PostMessage :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO BOOL
postQuitMessage :: Int -> IO ()
postThreadMessage :: DWORD -> WindowMessage -> WPARAM -> LPARAM -> IO ()
c_PostThreadMessage :: DWORD -> WindowMessage -> WPARAM -> LPARAM -> IO BOOL
hWND_BROADCAST :: HWND
inSendMessage :: IO Bool


-- | Provide AnimatedWindow function and flags.
module Graphics.Win32.Window.AnimateWindow
type AnimateWindowType = DWORD
aW_SLIDE :: AnimateWindowType
aW_ACTIVATE :: AnimateWindowType
aW_BLEND :: AnimateWindowType
aW_HIDE :: AnimateWindowType
aW_CENTER :: AnimateWindowType
aW_HOR_POSITIVE :: AnimateWindowType
aW_HOR_NEGATIVE :: AnimateWindowType
aW_VER_POSITIVE :: AnimateWindowType
aW_VER_NEGATIVE :: AnimateWindowType
animateWindow :: HWND -> DWORD -> AnimateWindowType -> IO ()
c_AnimateWindow :: HWND -> DWORD -> AnimateWindowType -> IO BOOL


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Window
type ClassName = LPCTSTR
mkClassName :: String -> ClassName
type ClassStyle = UINT
cS_VREDRAW :: ClassStyle
cS_HREDRAW :: ClassStyle
cS_OWNDC :: ClassStyle
cS_CLASSDC :: ClassStyle
cS_PARENTDC :: ClassStyle
cS_SAVEBITS :: ClassStyle
cS_DBLCLKS :: ClassStyle
cS_BYTEALIGNCLIENT :: ClassStyle
cS_BYTEALIGNWINDOW :: ClassStyle
cS_NOCLOSE :: ClassStyle
cS_GLOBALCLASS :: ClassStyle
type WNDCLASS = (ClassStyle, HINSTANCE, Maybe HICON, Maybe HCURSOR, Maybe HBRUSH, Maybe LPCTSTR, ClassName)
withWNDCLASS :: WNDCLASS -> (Ptr WNDCLASS -> IO a) -> IO a
genericWndProc_p :: FunPtr WindowClosure
registerClass :: WNDCLASS -> IO (Maybe ATOM)
c_RegisterClass :: Ptr WNDCLASS -> IO ATOM
unregisterClass :: ClassName -> HINSTANCE -> IO ()
type WindowStyle = DWORD
wS_OVERLAPPED :: WindowStyle
wS_POPUP :: WindowStyle
wS_CHILD :: WindowStyle
wS_CLIPSIBLINGS :: WindowStyle
wS_CLIPCHILDREN :: WindowStyle
wS_VISIBLE :: WindowStyle
wS_DISABLED :: WindowStyle
wS_MINIMIZE :: WindowStyle
wS_MAXIMIZE :: WindowStyle
wS_CAPTION :: WindowStyle
wS_BORDER :: WindowStyle
wS_DLGFRAME :: WindowStyle
wS_VSCROLL :: WindowStyle
wS_HSCROLL :: WindowStyle
wS_SYSMENU :: WindowStyle
type WindowStyleEx = DWORD
wS_THICKFRAME :: WindowStyle
wS_MINIMIZEBOX :: WindowStyle
wS_EX_DLGMODALFRAME :: WindowStyleEx
wS_MAXIMIZEBOX :: WindowStyle
wS_EX_NOPARENTNOTIFY :: WindowStyleEx
wS_GROUP :: WindowStyle
wS_EX_TOPMOST :: WindowStyleEx
wS_TABSTOP :: WindowStyle
wS_EX_ACCEPTFILES :: WindowStyleEx
wS_OVERLAPPEDWINDOW :: WindowStyle
wS_EX_TRANSPARENT :: WindowStyleEx
wS_POPUPWINDOW :: WindowStyle
wS_EX_MDICHILD :: WindowStyleEx
wS_CHILDWINDOW :: WindowStyle
wS_EX_TOOLWINDOW :: WindowStyleEx
wS_TILED :: WindowStyle
wS_EX_WINDOWEDGE :: WindowStyleEx
wS_ICONIC :: WindowStyle
wS_EX_CLIENTEDGE :: WindowStyleEx
wS_SIZEBOX :: WindowStyle
wS_EX_CONTEXTHELP :: WindowStyleEx
wS_TILEDWINDOW :: WindowStyle
wS_EX_RIGHT :: WindowStyleEx
wS_EX_LEFT :: WindowStyleEx
wS_EX_RTLREADING :: WindowStyleEx
cW_USEDEFAULT :: Pos
wS_EX_LTRREADING :: WindowStyleEx
wS_EX_LEFTSCROLLBAR :: WindowStyleEx
wS_EX_RIGHTSCROLLBAR :: WindowStyleEx
type Pos = Int
wS_EX_CONTROLPARENT :: WindowStyleEx
type MbPos = Maybe Pos
wS_EX_STATICEDGE :: WindowStyleEx
maybePos :: Maybe Pos -> Pos
wS_EX_APPWINDOW :: WindowStyleEx
wS_EX_OVERLAPPEDWINDOW :: WindowStyleEx
type WindowClosure = HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT
wS_EX_PALETTEWINDOW :: WindowStyleEx
mkWindowClosure :: WindowClosure -> IO (FunPtr WindowClosure)

-- | The standard C wndproc for every window class registered by
--   <a>registerClass</a> is a C function pointer provided with this
--   library. It in turn delegates to a Haskell function pointer stored in
--   <tt>gWLP_USERDATA</tt>. This action creates that function pointer. All
--   Haskell function pointers must be freed in order to allow the objects
--   they close over to be garbage collected. Consequently, if you are
--   replacing a window closure previously set via this method or
--   indirectly with <a>createWindow</a> or <a>createWindowEx</a> you must
--   free it. This action returns a function pointer to the old window
--   closure for you to free. The current window closure is freed
--   automatically by <a>defWindowProc</a> when it receives
--   <a>wM_NCDESTROY</a>.
setWindowClosure :: HWND -> WindowClosure -> IO (Maybe (FunPtr WindowClosure))
c_SetWindowLongPtr :: HWND -> INT -> Ptr LONG -> IO (Ptr LONG)
c_GetWindowLongPtr :: HANDLE -> INT -> IO LONG_PTR

-- | Creates a window with a default extended window style. If you create
--   many windows over the life of your program, WindowClosure may leak
--   memory. Be sure to delegate to <a>defWindowProc</a> for
--   <a>wM_NCDESTROY</a> and see <a>defWindowProc</a> and
--   <a>setWindowClosure</a> for details.
createWindow :: ClassName -> String -> WindowStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HINSTANCE -> WindowClosure -> IO HWND

-- | Creates a window and allows your to specify the extended window style.
--   If you create many windows over the life of your program,
--   WindowClosure may leak memory. Be sure to delegate to
--   <a>defWindowProc</a> for <a>wM_NCDESTROY</a> and see
--   <a>defWindowProc</a> and <a>setWindowClosure</a> for details.
createWindowEx :: WindowStyle -> ClassName -> String -> WindowStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HINSTANCE -> WindowClosure -> IO HWND
c_CreateWindowEx :: WindowStyle -> ClassName -> LPCTSTR -> WindowStyle -> Pos -> Pos -> Pos -> Pos -> HWND -> HMENU -> HINSTANCE -> LPVOID -> IO HWND

-- | Delegates to the Win32 default window procedure. If you are using a
--   window created by <a>createWindow</a>, <a>createWindowEx</a> or on
--   which you have called <a>setWindowClosure</a>, please note that the
--   window will leak memory once it is destroyed unless you call
--   <a>freeWindowProc</a> when it receives <a>wM_NCDESTROY</a>. If you
--   wish to do this, instead of using this function directly, you can
--   delegate to <a>defWindowProcSafe</a> which will handle it for you. As
--   an alternative, you can manually retrieve the window closure function
--   pointer and free it after the window has been destroyed. Check the
--   implementation of <a>freeWindowProc</a> for a guide.
defWindowProc :: Maybe HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT

-- | Delegates to the standard default window procedure, but if it receives
--   the <a>wM_NCDESTROY</a> message it first frees the window closure to
--   allow the closure and any objects it closes over to be garbage
--   collected. <a>wM_NCDESTROY</a> is the last message a window receives
--   prior to being deleted.
defWindowProcSafe :: Maybe HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT
c_DefWindowProc :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT

-- | Frees a function pointer to the window closure which has been set
--   directly by <a>setWindowClosure</a> or indirectly by
--   <a>createWindowEx</a>. You should call this function in your window
--   closure's <a>wM_NCDESTROY</a> case unless you delegate that case to
--   <a>defWindowProc</a> (e.g. as part of the default).
freeWindowProc :: HWND -> IO ()
getClientRect :: HWND -> IO RECT
c_GetClientRect :: HWND -> Ptr RECT -> IO Bool
getWindowRect :: HWND -> IO RECT
c_GetWindowRect :: HWND -> Ptr RECT -> IO Bool
invalidateRect :: Maybe HWND -> Maybe LPRECT -> Bool -> IO ()
c_InvalidateRect :: HWND -> LPRECT -> Bool -> IO Bool
screenToClient :: HWND -> POINT -> IO POINT
c_ScreenToClient :: HWND -> Ptr POINT -> IO Bool
clientToScreen :: HWND -> POINT -> IO POINT
c_ClientToScreen :: HWND -> Ptr POINT -> IO Bool
setWindowText :: HWND -> String -> IO ()
c_SetWindowText :: HWND -> LPCTSTR -> IO Bool
getWindowText :: HWND -> Int -> IO String
c_GetWindowText :: HWND -> LPTSTR -> Int -> IO Int
getWindowTextLength :: HWND -> IO Int
c_GetWindowTextLength :: HWND -> IO Int
type PAINTSTRUCT = (HDC, Bool, RECT)
type LPPAINTSTRUCT = Addr
sizeofPAINTSTRUCT :: DWORD
allocaPAINTSTRUCT :: (LPPAINTSTRUCT -> IO a) -> IO a
beginPaint :: HWND -> LPPAINTSTRUCT -> IO HDC
c_BeginPaint :: HWND -> LPPAINTSTRUCT -> IO HDC
endPaint :: HWND -> LPPAINTSTRUCT -> IO ()
type ShowWindowControl = DWORD
sW_HIDE :: ShowWindowControl
sW_SHOWNORMAL :: ShowWindowControl
sW_SHOWMINIMIZED :: ShowWindowControl
sW_SHOWMAXIMIZED :: ShowWindowControl
sW_MAXIMIZE :: ShowWindowControl
sW_SHOWNOACTIVATE :: ShowWindowControl
sW_SHOW :: ShowWindowControl
sW_MINIMIZE :: ShowWindowControl
showWindow :: HWND -> ShowWindowControl -> IO Bool
sW_SHOWMINNOACTIVE :: ShowWindowControl
isWindowVisible :: HWND -> IO Bool
sW_SHOWNA :: ShowWindowControl
sW_RESTORE :: ShowWindowControl
adjustWindowRect :: RECT -> WindowStyle -> Bool -> IO RECT
c_AdjustWindowRect :: Ptr RECT -> WindowStyle -> Bool -> IO Bool
adjustWindowRectEx :: RECT -> WindowStyle -> Bool -> WindowStyleEx -> IO RECT
c_AdjustWindowRectEx :: Ptr RECT -> WindowStyle -> Bool -> WindowStyleEx -> IO Bool
anyPopup :: IO Bool
arrangeIconicWindows :: HWND -> IO ()
c_ArrangeIconicWindows :: HWND -> IO Bool
beginDeferWindowPos :: Int -> IO HDWP
c_BeginDeferWindowPos :: Int -> IO HDWP
bringWindowToTop :: HWND -> IO ()
c_BringWindowToTop :: HWND -> IO Bool
childWindowFromPoint :: HWND -> POINT -> IO (Maybe HWND)
childWindowFromPointEx :: HWND -> POINT -> DWORD -> IO (Maybe HWND)
closeWindow :: HWND -> IO ()
deferWindowPos :: HDWP -> HWND -> HWND -> Int -> Int -> Int -> Int -> SetWindowPosFlags -> IO HDWP
c_DeferWindowPos :: HDWP -> HWND -> HWND -> Int -> Int -> Int -> Int -> SetWindowPosFlags -> IO HDWP
destroyWindow :: HWND -> IO ()
c_DestroyWindow :: HWND -> IO Bool
endDeferWindowPos :: HDWP -> IO ()
c_EndDeferWindowPos :: HDWP -> IO Bool
findWindow :: Maybe String -> Maybe String -> IO (Maybe HWND)

-- | <i>Deprecated: Use 'findWindow Nothing' instead.</i>
findWindowByName :: String -> IO (Maybe HWND)
c_FindWindow :: LPCTSTR -> LPCTSTR -> IO HWND
findWindowEx :: Maybe HWND -> Maybe HWND -> Maybe String -> Maybe String -> IO (Maybe HWND)
c_FindWindowEx :: HWND -> HWND -> LPCTSTR -> LPCTSTR -> IO HWND
flashWindow :: HWND -> Bool -> IO Bool
moveWindow :: HWND -> Int -> Int -> Int -> Int -> Bool -> IO ()
c_MoveWindow :: HWND -> Int -> Int -> Int -> Int -> Bool -> IO Bool
getDesktopWindow :: IO HWND
getForegroundWindow :: IO HWND
getParent :: HWND -> IO HWND
c_GetParent :: HWND -> IO HWND
getTopWindow :: HWND -> IO HWND
c_GetTopWindow :: HWND -> IO HWND
type SetWindowPosFlags = UINT
sWP_NOSIZE :: SetWindowPosFlags
sWP_NOMOVE :: SetWindowPosFlags
sWP_NOZORDER :: SetWindowPosFlags
sWP_NOREDRAW :: SetWindowPosFlags
sWP_NOACTIVATE :: SetWindowPosFlags
sWP_FRAMECHANGED :: SetWindowPosFlags
sWP_SHOWWINDOW :: SetWindowPosFlags
sWP_HIDEWINDOW :: SetWindowPosFlags
sWP_NOCOPYBITS :: SetWindowPosFlags
sWP_NOOWNERZORDER :: SetWindowPosFlags
type GetDCExFlags = DWORD
sWP_NOSENDCHANGING :: SetWindowPosFlags
dCX_WINDOW :: GetDCExFlags
sWP_DRAWFRAME :: SetWindowPosFlags
dCX_CACHE :: GetDCExFlags
sWP_NOREPOSITION :: SetWindowPosFlags
dCX_CLIPCHILDREN :: GetDCExFlags
dCX_CLIPSIBLINGS :: GetDCExFlags
dCX_PARENTCLIP :: GetDCExFlags
dCX_EXCLUDERGN :: GetDCExFlags
dCX_INTERSECTRGN :: GetDCExFlags
getDCEx :: HWND -> HRGN -> GetDCExFlags -> IO HDC
dCX_LOCKWINDOWUPDATE :: GetDCExFlags
c_GetDCEx :: HWND -> PRGN -> GetDCExFlags -> IO HDC
getDC :: Maybe HWND -> IO HDC
c_GetDC :: HWND -> IO HDC
getWindowDC :: Maybe HWND -> IO HDC
c_GetWindowDC :: HWND -> IO HDC
releaseDC :: Maybe HWND -> HDC -> IO ()
c_ReleaseDC :: HWND -> HDC -> IO Bool
getDCOrgEx :: HDC -> IO POINT
c_GetDCOrgEx :: HDC -> Ptr POINT -> IO Bool
hideCaret :: HWND -> IO ()
c_HideCaret :: HWND -> IO Bool
showCaret :: HWND -> IO ()
c_ShowCaret :: HWND -> IO Bool
createCaret :: HWND -> HBITMAP -> Maybe INT -> Maybe INT -> IO ()
c_CreateCaret :: HWND -> HBITMAP -> INT -> INT -> IO Bool
destroyCaret :: IO ()
c_DestroyCaret :: IO Bool
getCaretPos :: IO POINT
c_GetCaretPos :: Ptr POINT -> IO Bool
setCaretPos :: POINT -> IO ()
c_SetCaretPos :: LONG -> LONG -> IO Bool
type LPMSG = Addr
allocaMessage :: (LPMSG -> IO a) -> IO a
getMessage :: LPMSG -> Maybe HWND -> IO Bool
c_GetMessage :: LPMSG -> HWND -> UINT -> UINT -> IO LONG
peekMessage :: LPMSG -> Maybe HWND -> UINT -> UINT -> UINT -> IO ()
c_PeekMessage :: LPMSG -> HWND -> UINT -> UINT -> UINT -> IO LONG
translateMessage :: LPMSG -> IO BOOL
updateWindow :: HWND -> IO ()
c_UpdateWindow :: HWND -> IO Bool
dispatchMessage :: LPMSG -> IO LONG
sendMessage :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Misc
type Accelerator = LPCTSTR
type Cursor = LPTSTR
type Icon = LPTSTR
loadAccelerators :: Maybe HINSTANCE -> Accelerator -> IO HACCEL
c_LoadAccelerators :: HINSTANCE -> Accelerator -> IO HACCEL
loadCursor :: Maybe HINSTANCE -> Cursor -> IO HCURSOR
c_LoadCursor :: HINSTANCE -> Cursor -> IO HCURSOR
loadIcon :: Maybe HINSTANCE -> Icon -> IO HICON
c_LoadIcon :: HINSTANCE -> Icon -> IO HICON
iDC_ARROW :: Cursor
iDC_IBEAM :: Cursor
iDC_WAIT :: Cursor
iDC_CROSS :: Cursor
iDC_UPARROW :: Cursor
iDC_SIZENWSE :: Cursor
iDC_SIZENESW :: Cursor
iDC_SIZEWE :: Cursor
iDC_SIZENS :: Cursor
iDI_APPLICATION :: Icon
iDI_HAND :: Icon
iDI_QUESTION :: Icon
iDI_EXCLAMATION :: Icon
iDI_ASTERISK :: Icon
type MBStyle = UINT
mB_OK :: MBStyle
mB_OKCANCEL :: MBStyle
mB_ABORTRETRYIGNORE :: MBStyle
mB_YESNOCANCEL :: MBStyle
mB_YESNO :: MBStyle
mB_RETRYCANCEL :: MBStyle
mB_ICONHAND :: MBStyle
mB_ICONQUESTION :: MBStyle
mB_ICONEXCLAMATION :: MBStyle
mB_ICONASTERISK :: MBStyle
mB_ICONINFORMATION :: MBStyle
type MBStatus = UINT
mB_ICONSTOP :: MBStyle
iDABORT :: MBStatus
mB_DEFBUTTON1 :: MBStyle
iDCANCEL :: MBStatus
mB_DEFBUTTON2 :: MBStyle
iDIGNORE :: MBStatus
mB_DEFBUTTON3 :: MBStyle
iDNO :: MBStatus
mB_APPLMODAL :: MBStyle
iDOK :: MBStatus
mB_SYSTEMMODAL :: MBStyle
iDRETRY :: MBStatus
mB_TASKMODAL :: MBStyle
iDYES :: MBStatus
mB_SETFOREGROUND :: MBStyle
messageBox :: Maybe HWND -> String -> String -> MBStyle -> IO MBStatus
c_MessageBox :: HWND -> LPCTSTR -> LPCTSTR -> MBStyle -> IO MBStatus
type StdHandleId = DWORD
sTD_INPUT_HANDLE :: StdHandleId
sTD_OUTPUT_HANDLE :: StdHandleId
sTD_ERROR_HANDLE :: StdHandleId
getStdHandle :: StdHandleId -> IO HANDLE
c_GetStdHandle :: StdHandleId -> IO HANDLE
transformedEllipse :: HDC -> POINT -> POINT -> POINT -> IO ()
c_transformedEllipse :: HDC -> LONG -> LONG -> LONG -> LONG -> LONG -> LONG -> IO Bool
getCursorPos :: IO POINT
c_GetCursorPos :: Ptr POINT -> IO Bool
setCursorPos :: POINT -> IO ()
c_SetCursorPos :: LONG -> LONG -> IO Bool
clipCursor :: RECT -> IO ()
c_ClipCursor :: Ptr RECT -> IO Bool
getClipCursor :: IO RECT
c_GetClipCursor :: Ptr RECT -> IO Bool
type ExitOption = UINT
eWX_FORCE :: ExitOption
eWX_LOGOFF :: ExitOption
eWX_POWEROFF :: ExitOption
eWX_REBOOT :: ExitOption
eWX_SHUTDOWN :: ExitOption
exitWindowsEx :: ExitOption -> IO ()
c_ExitWindowsEx :: ExitOption -> DWORD -> IO Bool
exitWindows :: IO ()
type Beep = UINT
type MbBeep = Maybe Beep
maybeBeep :: Maybe Beep -> Beep
type Duration = Int
type MbDuration = Maybe Duration
maybeDuration :: Maybe Duration -> Duration
messageBeep :: Maybe Beep -> IO ()
c_MessageBeep :: Beep -> IO ()
beep :: WORD -> MbDuration -> IO ()
c_Beep :: WORD -> Duration -> IO Bool
type TimerId = UINT
type TIMERPROC = FunPtr (HWND -> UINT -> TimerId -> DWORD -> IO ())
setWinTimer :: HWND -> TimerId -> UINT -> IO TimerId
c_SetTimer :: HWND -> TimerId -> UINT -> TIMERPROC -> IO TimerId
killTimer :: Maybe HWND -> TimerId -> IO ()
c_KillTimer :: HWND -> TimerId -> IO Bool
type MilliSeconds = DWORD
timeGetTime :: IO MilliSeconds


-- | A collection of FFI declarations for interfacing with Win32 Console
--   API
module System.Win32.Console
getConsoleMode :: HANDLE -> IO DWORD
setConsoleMode :: HANDLE -> DWORD -> IO ()
eNABLE_ECHO_INPUT :: DWORD
eNABLE_EXTENDED_FLAGS :: DWORD
eNABLE_INSERT_MODE :: DWORD
eNABLE_LINE_INPUT :: DWORD
eNABLE_MOUSE_INPUT :: DWORD
eNABLE_PROCESSED_INPUT :: DWORD
eNABLE_QUICK_EDIT_MODE :: DWORD
eNABLE_WINDOW_INPUT :: DWORD
eNABLE_VIRTUAL_TERMINAL_INPUT :: DWORD
eNABLE_PROCESSED_OUTPUT :: DWORD
eNABLE_WRAP_AT_EOL_OUTPUT :: DWORD
eNABLE_VIRTUAL_TERMINAL_PROCESSING :: DWORD
dISABLE_NEWLINE_AUTO_RETURN :: DWORD
eNABLE_LVB_GRID_WORLDWIDE :: DWORD
getConsoleCP :: IO UINT
setConsoleCP :: UINT -> IO ()
getConsoleOutputCP :: IO UINT
setConsoleOutputCP :: UINT -> IO ()
type CtrlEvent = DWORD
cTRL_C_EVENT :: CtrlEvent
cTRL_BREAK_EVENT :: CtrlEvent
generateConsoleCtrlEvent :: CtrlEvent -> DWORD -> IO ()

-- | This function can be used to parse commandline arguments and return
--   the split up arguments as elements in a list.
commandLineToArgv :: String -> IO [String]
data CONSOLE_SCREEN_BUFFER_INFO
CONSOLE_SCREEN_BUFFER_INFO :: COORD -> COORD -> WORD -> SMALL_RECT -> COORD -> CONSOLE_SCREEN_BUFFER_INFO
[dwSize] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD
[dwCursorPosition] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD
[wAttributes] :: CONSOLE_SCREEN_BUFFER_INFO -> WORD
[srWindow] :: CONSOLE_SCREEN_BUFFER_INFO -> SMALL_RECT
[dwMaximumWindowSize] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD
data COORD
COORD :: SHORT -> SHORT -> COORD
[xPos] :: COORD -> SHORT
[yPos] :: COORD -> SHORT
data SMALL_RECT
SMALL_RECT :: SHORT -> SHORT -> SHORT -> SHORT -> SMALL_RECT
[leftPos] :: SMALL_RECT -> SHORT
[topPos] :: SMALL_RECT -> SHORT
[rightPos] :: SMALL_RECT -> SHORT
[bottomPos] :: SMALL_RECT -> SHORT
getConsoleScreenBufferInfo :: HANDLE -> IO CONSOLE_SCREEN_BUFFER_INFO
getCurrentConsoleScreenBufferInfo :: IO CONSOLE_SCREEN_BUFFER_INFO
instance GHC.Classes.Eq System.Win32.Console.COORD
instance GHC.Show.Show System.Win32.Console.COORD
instance GHC.Classes.Eq System.Win32.Console.SMALL_RECT
instance GHC.Show.Show System.Win32.Console.SMALL_RECT
instance GHC.Classes.Eq System.Win32.Console.CONSOLE_SCREEN_BUFFER_INFO
instance GHC.Show.Show System.Win32.Console.CONSOLE_SCREEN_BUFFER_INFO
instance Foreign.Storable.Storable System.Win32.Console.CONSOLE_SCREEN_BUFFER_INFO
instance Foreign.Storable.Storable System.Win32.Console.SMALL_RECT
instance Foreign.Storable.Storable System.Win32.Console.COORD


-- | Set handlers of console Ctrl events.
module System.Win32.Console.CtrlHandler
type CtrlEvent = DWORD
type Handler = CtrlEvent -> IO BOOL
type PHANDLER_ROUTINE = FunPtr Handler
withConsoleCtrlHandler :: Handler -> IO a -> IO a

-- | This function isn't suitable when we want to set the cTRL_C_EVENT
--   handler. If you want to set the cTRL_C_EVENT handler, use
--   <a>c_SetConsoleCtrlHandler</a> instead.
setConsoleCtrlHandler :: PHANDLER_ROUTINE -> BOOL -> IO ()
c_SetConsoleCtrlHandler :: PHANDLER_ROUTINE -> BOOL -> IO BOOL
mkHandler :: Handler -> IO PHANDLER_ROUTINE
cTRL_C_EVENT :: CtrlEvent
cTRL_BREAK_EVENT :: CtrlEvent


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Menu
type MenuName = LPCTSTR
checkMenuItem :: HMENU -> MenuItem -> MenuFlag -> IO Bool
c_CheckMenuItem :: HMENU -> UINT -> UINT -> IO DWORD
checkMenuRadioItem :: HMENU -> MenuItem -> MenuItem -> MenuItem -> MenuFlag -> IO ()
c_CheckMenuRadioItem :: HMENU -> UINT -> UINT -> UINT -> UINT -> IO Bool
createMenu :: IO HMENU
c_CreateMenu :: IO HMENU
createPopupMenu :: IO HMENU
c_CreatePopupMenu :: IO HMENU
drawMenuBar :: HWND -> IO ()
c_DrawMenuBar :: HWND -> IO Bool
type MenuState = MenuFlag
enableMenuItem :: HMENU -> MenuItem -> MenuFlag -> IO MenuState
c_EnableMenuItem :: HMENU -> UINT -> UINT -> IO MenuState
type GMDIFlag = UINT
type MenuFlag = UINT
gMDI_USEDISABLED :: GMDIFlag
gMDI_GOINTOPOPUPS :: GMDIFlag
mF_BYCOMMAND :: MenuFlag
mF_BYPOSITION :: MenuFlag
mF_CHECKED :: MenuFlag
type MenuItem = UINT
mF_INSERT :: MenuItem
mF_CHANGE :: MenuItem
mF_APPEND :: MenuItem
mF_DELETE :: MenuItem
mF_REMOVE :: MenuItem
mF_USECHECKBITMAPS :: MenuItem
mF_POPUP :: MenuItem
mFT_STRING :: MenuFlag
mF_SYSMENU :: MenuItem
mFT_BITMAP :: MenuFlag
mF_HELP :: MenuItem
mFT_MENUBARBREAK :: MenuFlag
mF_MOUSESELECT :: MenuItem
mFT_MENUBREAK :: MenuFlag
mF_END :: MenuItem
mFT_OWNERDRAW :: MenuFlag
mFT_RADIOCHECK :: MenuFlag
mFT_SEPARATOR :: MenuFlag
mFS_GRAYED :: MenuState
mFT_RIGHTORDER :: MenuFlag
mFS_DISABLED :: MenuState
mFT_RIGHTJUSTIFY :: MenuFlag
mFS_CHECKED :: MenuState
mFS_HILITE :: MenuState
mFS_ENABLED :: MenuState
mFS_UNCHECKED :: MenuState
type TrackMenuFlag = UINT
mFS_UNHILITE :: MenuState
tPM_LEFTBUTTON :: TrackMenuFlag
mFS_DEFAULT :: MenuState
tPM_RIGHTBUTTON :: TrackMenuFlag
tPM_LEFTALIGN :: TrackMenuFlag
tPM_CENTERALIGN :: TrackMenuFlag
tPM_RIGHTALIGN :: TrackMenuFlag
tPM_TOPALIGN :: TrackMenuFlag
tPM_VCENTERALIGN :: TrackMenuFlag
tPM_BOTTOMALIGN :: TrackMenuFlag
type SystemMenuCommand = UINT
tPM_HORIZONTAL :: TrackMenuFlag
sC_SIZE :: SystemMenuCommand
tPM_VERTICAL :: TrackMenuFlag
sC_MOVE :: SystemMenuCommand
tPM_NONOTIFY :: TrackMenuFlag
sC_MINIMIZE :: SystemMenuCommand
tPM_RETURNCMD :: TrackMenuFlag
sC_MAXIMIZE :: SystemMenuCommand
sC_NEXTWINDOW :: SystemMenuCommand
sC_PREVWINDOW :: SystemMenuCommand
sC_CLOSE :: SystemMenuCommand
sC_VSCROLL :: SystemMenuCommand
sC_HSCROLL :: SystemMenuCommand
sC_MOUSEMENU :: SystemMenuCommand
sC_KEYMENU :: SystemMenuCommand
sC_ARRANGE :: SystemMenuCommand
isMenu :: HMENU -> IO Bool
sC_RESTORE :: SystemMenuCommand
getSystemMenu :: HWND -> Bool -> IO (Maybe HMENU)
sC_TASKLIST :: SystemMenuCommand
sC_SCREENSAVE :: SystemMenuCommand
c_GetSystemMenu :: HWND -> Bool -> IO HMENU
sC_HOTKEY :: SystemMenuCommand
getMenu :: HWND -> IO (Maybe HMENU)
sC_DEFAULT :: SystemMenuCommand
sC_MONITORPOWER :: SystemMenuCommand
c_GetMenu :: HWND -> IO HMENU
sC_CONTEXTHELP :: SystemMenuCommand
getMenuDefaultItem :: HMENU -> Bool -> GMDIFlag -> IO MenuItem
sC_SEPARATOR :: SystemMenuCommand
c_GetMenuDefaultItem :: HMENU -> Bool -> UINT -> IO UINT
getMenuState :: HMENU -> MenuItem -> MenuFlag -> IO MenuState
c_GetMenuState :: HMENU -> UINT -> UINT -> IO MenuState
getSubMenu :: HMENU -> MenuItem -> IO (Maybe HMENU)
c_GetSubMenu :: HMENU -> UINT -> IO HMENU
setMenu :: HWND -> HMENU -> IO ()
c_SetMenu :: HWND -> HMENU -> IO Bool
getMenuItemCount :: HMENU -> IO Int
c_GetMenuItemCount :: HMENU -> IO Int
type MenuID = UINT
getMenuItemID :: HMENU -> MenuItem -> IO MenuID
c_GetMenuItemID :: HMENU -> UINT -> IO MenuID
data MenuItemInfo
MenuItemInfo :: MenuFlag -> MenuState -> UINT -> HMENU -> HBITMAP -> HBITMAP -> DWORD -> String -> MenuItemInfo
[menuItemType] :: MenuItemInfo -> MenuFlag
[menuItemState] :: MenuItemInfo -> MenuState
[menuItemID] :: MenuItemInfo -> UINT
[menuItemSubMenu] :: MenuItemInfo -> HMENU
[menuItemBitmapChecked] :: MenuItemInfo -> HBITMAP
[menuItemBitmapUnchecked] :: MenuItemInfo -> HBITMAP
[menuItemData] :: MenuItemInfo -> DWORD
[menuItemTypeData] :: MenuItemInfo -> String
peekMenuItemInfo :: Ptr MenuItemInfo -> IO MenuItemInfo
allocaMenuItemInfo :: (Ptr MenuItemInfo -> IO a) -> IO a
withMenuItemInfo :: MenuItemInfo -> (Ptr MenuItemInfo -> IO a) -> IO a
type MenuItemMask = UINT
mIIM_CHECKMARKS :: MenuItemMask
mIIM_DATA :: MenuItemMask
mIIM_ID :: MenuItemMask
mIIM_STATE :: MenuItemMask
mIIM_SUBMENU :: MenuItemMask
pokeFMask :: Ptr MenuItemInfo -> MenuItemMask -> IO ()
mIIM_TYPE :: MenuItemMask
getMenuItemInfo :: HMENU -> MenuItem -> Bool -> MenuItemMask -> IO MenuItemInfo
c_GetMenuItemInfo :: HMENU -> UINT -> Bool -> Ptr MenuItemInfo -> IO Bool
getMenuItemRect :: HWND -> HMENU -> MenuItem -> IO RECT
c_GetMenuItemRect :: HWND -> HMENU -> UINT -> LPRECT -> IO Bool
hiliteMenuItem :: HWND -> HMENU -> MenuItem -> MenuFlag -> IO Bool
insertMenuItem :: HMENU -> MenuItem -> Bool -> MenuItemInfo -> IO ()
c_InsertMenuItem :: HMENU -> UINT -> Bool -> Ptr MenuItemInfo -> IO Bool
type Menu = LPCTSTR
loadMenu :: Maybe HINSTANCE -> Menu -> IO HMENU
c_LoadMenu :: HINSTANCE -> Menu -> IO HMENU
menuItemFromPoint :: HWND -> HMENU -> POINT -> IO UINT
setMenuDefaultItem :: HMENU -> MenuItem -> Bool -> IO ()
c_SetMenuDefaultItem :: HMENU -> MenuItem -> Bool -> IO Bool
setMenuItemBitmaps :: HMENU -> MenuItem -> MenuFlag -> HBITMAP -> HBITMAP -> IO ()
c_SetMenuItemBitmaps :: HMENU -> UINT -> UINT -> HBITMAP -> HBITMAP -> IO Bool
destroyMenu :: HMENU -> IO ()
c_DestroyMenu :: HMENU -> IO Bool
deleteMenu :: HMENU -> MenuItem -> MenuFlag -> IO ()
c_DeleteMenu :: HMENU -> UINT -> UINT -> IO Bool
setMenuItemInfo :: HMENU -> MenuItem -> Bool -> MenuItemMask -> MenuItemInfo -> IO ()
c_SetMenuItemInfo :: HMENU -> UINT -> Bool -> Ptr MenuItemInfo -> IO Bool
trackPopupMenu :: HMENU -> TrackMenuFlag -> Int -> Int -> HWND -> RECT -> IO ()
c_TrackPopupMenu :: HMENU -> TrackMenuFlag -> Int -> Int -> Int -> HWND -> LPRECT -> IO Bool
type TPMPARAMS = ()
withTPMPARAMS :: Ptr RECT -> (Ptr TPMPARAMS -> IO a) -> IO a
trackPopupMenuEx :: HMENU -> TrackMenuFlag -> Int -> Int -> HWND -> Maybe (Ptr RECT) -> IO ()
c_TrackPopupMenuEx :: HMENU -> TrackMenuFlag -> Int -> Int -> HWND -> Ptr TPMPARAMS -> IO Bool
appendMenu :: HMENU -> MenuFlag -> MenuID -> Maybe String -> IO ()
c_AppendMenu :: HMENU -> UINT -> MenuID -> LPCTSTR -> IO Bool
insertMenu :: HMENU -> MenuItem -> MenuFlag -> MenuID -> Maybe String -> IO ()
c_InsertMenu :: HMENU -> UINT -> UINT -> MenuID -> LPCTSTR -> IO Bool
modifyMenu :: HMENU -> MenuItem -> MenuFlag -> MenuID -> Maybe String -> IO ()
c_ModifyMenu :: HMENU -> UINT -> UINT -> MenuID -> LPCTSTR -> IO Bool
removeMenu :: HMENU -> MenuItem -> MenuFlag -> IO ()
c_RemoveMenu :: HMENU -> UINT -> UINT -> IO Bool


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Key
type VKey = DWORD
vK_LBUTTON :: VKey
vK_RBUTTON :: VKey
vK_CANCEL :: VKey
vK_MBUTTON :: VKey
vK_BACK :: VKey
vK_TAB :: VKey
vK_CLEAR :: VKey
vK_RETURN :: VKey
vK_SHIFT :: VKey
vK_CONTROL :: VKey
vK_MENU :: VKey
vK_PAUSE :: VKey
vK_CAPITAL :: VKey
vK_ESCAPE :: VKey
vK_SPACE :: VKey
vK_PRIOR :: VKey
vK_NEXT :: VKey
vK_END :: VKey
vK_HOME :: VKey
vK_LEFT :: VKey
vK_UP :: VKey
vK_RIGHT :: VKey
vK_DOWN :: VKey
vK_SELECT :: VKey
vK_EXECUTE :: VKey
vK_SNAPSHOT :: VKey
vK_INSERT :: VKey
vK_DELETE :: VKey
vK_HELP :: VKey
vK_NUMPAD0 :: VKey
vK_NUMPAD1 :: VKey
vK_NUMPAD2 :: VKey
vK_NUMPAD3 :: VKey
vK_NUMPAD4 :: VKey
vK_NUMPAD5 :: VKey
vK_NUMPAD6 :: VKey
vK_NUMPAD7 :: VKey
vK_NUMPAD8 :: VKey
vK_NUMPAD9 :: VKey
vK_MULTIPLY :: VKey
vK_ADD :: VKey
vK_SEPARATOR :: VKey
vK_SUBTRACT :: VKey
vK_DECIMAL :: VKey
vK_DIVIDE :: VKey
vK_F1 :: VKey
vK_F2 :: VKey
vK_F3 :: VKey
vK_F4 :: VKey
vK_F5 :: VKey
vK_F6 :: VKey
vK_F7 :: VKey
vK_F8 :: VKey
vK_F9 :: VKey
vK_F10 :: VKey
vK_F11 :: VKey
vK_F12 :: VKey
vK_F13 :: VKey
vK_F14 :: VKey
vK_F15 :: VKey
vK_F16 :: VKey
vK_F17 :: VKey
vK_F18 :: VKey
vK_F19 :: VKey
vK_F20 :: VKey
vK_F21 :: VKey
vK_F22 :: VKey
vK_F23 :: VKey
vK_F24 :: VKey
vK_NUMLOCK :: VKey
vK_SCROLL :: VKey
vK_XBUTTON1 :: VKey
vK_XBUTTON2 :: VKey
vK_KANA :: VKey
vK_HANGUL :: VKey
vK_JUNJA :: VKey
vK_FINAL :: VKey
vK_HANJA :: VKey
vK_KANJI :: VKey
vK_CONVERT :: VKey
vK_NONCONVERT :: VKey
vK_ACCEPT :: VKey
vK_MODECHANGE :: VKey
vK_PRINT :: VKey
vK_APPS :: VKey
vK_SLEEP :: VKey
vK_LWIN :: VKey
vK_RWIN :: VKey
vK_LSHIFT :: VKey
vK_RSHIFT :: VKey
vK_LCONTROL :: VKey
vK_RCONTROL :: VKey
vK_LMENU :: VKey
vK_RMENU :: VKey
vK_BROWSER_BACK :: VKey
vK_BROWSER_FORWARD :: VKey
vK_BROWSER_REFRESH :: VKey
vK_BROWSER_STOP :: VKey
vK_BROWSER_SEARCH :: VKey
vK_BROWSER_FAVORITES :: VKey
vK_BROWSER_HOME :: VKey
vK_VOLUME_MUTE :: VKey
vK_VOLUME_DOWN :: VKey
vK_VOLUME_UP :: VKey
vK_MEDIA_NEXT_TRACK :: VKey
vK_MEDIA_PREV_TRACK :: VKey
vK_MEDIA_STOP :: VKey
vK_MEDIA_PLAY_PAUSE :: VKey
vK_LAUNCH_MAIL :: VKey
vK_LAUNCH_MEDIA_SELECT :: VKey
vK_LAUNCH_APP1 :: VKey
vK_LAUNCH_APP2 :: VKey
vK_OEM_1 :: VKey
vK_OEM_PLUS :: VKey
vK_OEM_COMMA :: VKey
vK_OEM_MINUS :: VKey
vK_OEM_PERIOD :: VKey
vK_OEM_2 :: VKey
vK_OEM_3 :: VKey
vK_OEM_4 :: VKey
vK_OEM_5 :: VKey
vK_OEM_6 :: VKey
vK_OEM_7 :: VKey
vK_OEM_8 :: VKey
vK_OEM_102 :: VKey
vK_PROCESSKEY :: VKey
vK_PACKET :: VKey
vK_ATTN :: VKey
vK_CRSEL :: VKey
vK_EXSEL :: VKey
vK_EREOF :: VKey
vK_PLAY :: VKey
vK_ZOOM :: VKey
vK_NONAME :: VKey
vK_PA1 :: VKey
vK_OEM_CLEAR :: VKey
c_VkKeyScanEx :: CWchar -> HKL -> IO SHORT
c_MapVirtualKey :: VKey -> UINT -> IO UINT
c_MapVirtualKeyEx :: VKey -> UINT -> HKL -> IO UINT
enableWindow :: HWND -> Bool -> IO Bool
getActiveWindow :: IO (Maybe HWND)
c_GetActiveWindow :: IO HWND
getAsyncKeyState :: Int -> IO WORD
getFocus :: IO (Maybe HWND)
c_GetFocus :: IO HWND
getKBCodePage :: IO UINT
isWindowEnabled :: HWND -> IO Bool
getCurrentKeyboardLayout :: IO HKL
getKeyboardLayoutList :: IO [HKL]
getKeyboardLayoutName :: IO String
withLoadKeyboardLayout :: KeyLayoutFlags -> (HKL -> IO a) -> IO a
withLoadKeyboardLayoutWithName :: String -> KeyLayoutFlags -> (HKL -> IO a) -> IO a
unloadKeyboardLayout :: HKL -> IO ()
c_GetKeyboardLayout :: TID -> IO HKL
c_GetKeyboardLayoutList :: Int -> Ptr HKL -> IO UINT
c_GetKeyboardLayoutName :: LPTSTR -> IO BOOL
c_LoadKeyboardLayout :: LPCTSTR -> KeyLayoutFlags -> IO HKL
c_UnloadKeyboardLayout :: HKL -> IO BOOL
type HKL = Ptr ()
type KeyLayoutFlags = UINT
kLF_ACTIVATE :: KeyLayoutFlags
kLF_NOTELLSHELL :: KeyLayoutFlags
kLF_REORDER :: KeyLayoutFlags
kLF_REPLACELANG :: KeyLayoutFlags
kLF_SUBSTITUTE_OK :: KeyLayoutFlags
kLF_SETFORPROCESS :: KeyLayoutFlags


-- | An FFI binding to the IMM (Input Method Manager) part of the Win32
--   API.
module Graphics.Win32.Window.IMM
type HIMC = Ptr ()
immGetContext :: HWND -> IO HIMC
immGetOpenStatus :: HIMC -> IO BOOL
immSetOpenStatus :: HIMC -> BOOL -> IO ()
c_ImmSetOpenStatus :: HIMC -> UINT -> IO BOOL
data IMEMode
IMEMode :: DWORD -> DWORD -> IMEMode
immGetConversionStatus :: HIMC -> IO IMEMode
c_ImmGetConversionStatus :: HIMC -> LPDWORD -> LPDWORD -> IO BOOL
immSetConversionStatus :: HIMC -> IMEMode -> IO ()
c_ImmSetConversionStatus :: HIMC -> DWORD -> DWORD -> IO BOOL
iME_CMODE_ALPHANUMERIC :: DWORD
iME_CMODE_CHARCODE :: DWORD
iME_CMODE_EUDC :: DWORD
iME_CMODE_FIXED :: DWORD
iME_CMODE_FULLSHAPE :: DWORD
iME_CMODE_HANJACONVERT :: DWORD
iME_CMODE_KATAKANA :: DWORD
iME_CMODE_NATIVE :: DWORD
iME_CMODE_NOCONVERSION :: DWORD
iME_CMODE_ROMAN :: DWORD
iME_CMODE_SOFTKBD :: DWORD
iME_CMODE_SYMBOL :: DWORD
iME_SMODE_AUTOMATIC :: DWORD
iME_SMODE_NONE :: DWORD
iME_SMODE_PHRASEPREDICT :: DWORD
iME_SMODE_PLAURALCLAUSE :: DWORD
iME_SMODE_SINGLECONVERT :: DWORD
immReleaseContext :: HWND -> HIMC -> IO ()
c_ImmReleaseContext :: HWND -> HIMC -> IO BOOL
immGetVirtualKey :: HWND -> IO VKey
immSimulateHotKey :: HWND -> DWORD -> IO ()
c_ImmSimulateHotKey :: HWND -> DWORD -> IO BOOL


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Icon
copyIcon :: HICON -> IO HICON
c_CopyIcon :: HICON -> IO HICON
drawIcon :: HDC -> Int -> Int -> HICON -> IO ()
c_DrawIcon :: HDC -> Int -> Int -> HICON -> IO Bool
destroyIcon :: HICON -> IO ()
c_DestroyIcon :: HICON -> IO Bool


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Region
badRegion :: RegionType -> Bool
combineRgn :: HRGN -> HRGN -> HRGN -> ClippingMode -> IO RegionType
c_CombineRgn :: PRGN -> PRGN -> PRGN -> ClippingMode -> IO RegionType
offsetRgn :: HRGN -> INT -> INT -> IO RegionType
c_OffsetRgn :: PRGN -> INT -> INT -> IO RegionType
getRgnBox :: HRGN -> LPRECT -> IO RegionType
c_GetRgnBox :: PRGN -> LPRECT -> IO RegionType
createEllipticRgn :: INT -> INT -> INT -> INT -> IO HRGN
c_CreateEllipticRgn :: INT -> INT -> INT -> INT -> IO PRGN
createEllipticRgnIndirect :: LPRECT -> IO HRGN
c_CreateEllipticRgnIndirect :: LPRECT -> IO PRGN
createRectRgn :: INT -> INT -> INT -> INT -> IO HRGN
c_CreateRectRgn :: INT -> INT -> INT -> INT -> IO PRGN
createRectRgnIndirect :: LPRECT -> IO HRGN
c_CreateRectRgnIndirect :: LPRECT -> IO PRGN
createRoundRectRgn :: INT -> INT -> INT -> INT -> INT -> INT -> IO HRGN
c_CreateRoundRectRgn :: INT -> INT -> INT -> INT -> INT -> INT -> IO PRGN
createPolygonRgn :: [POINT] -> PolyFillMode -> IO HRGN
c_CreatePolygonRgn :: Ptr POINT -> Int -> PolyFillMode -> IO PRGN
equalRgn :: PRGN -> PRGN -> IO Bool
fillRgn :: HDC -> HRGN -> HBRUSH -> IO ()
c_FillRgn :: HDC -> PRGN -> HBRUSH -> IO Bool
invertRgn :: HDC -> HRGN -> IO ()
c_InvertRgn :: HDC -> PRGN -> IO Bool
paintRgn :: HDC -> HRGN -> IO ()
c_PaintRgn :: HDC -> PRGN -> IO Bool
frameRgn :: HDC -> HRGN -> HBRUSH -> Int -> Int -> IO ()
c_FrameRgn :: HDC -> PRGN -> HBRUSH -> Int -> Int -> IO Bool
ptInRegion :: HRGN -> Int -> Int -> IO Bool
c_PtInRegion :: PRGN -> Int -> Int -> IO Bool
rectInRegion :: HRGN -> RECT -> IO Bool
c_RectInRegion :: PRGN -> Ptr RECT -> IO Bool


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Pen
type StockPen = INT
wHITE_PEN :: StockPen
bLACK_PEN :: StockPen
nULL_PEN :: StockPen
getStockPen :: StockPen -> IO HPEN
c_GetStockPen :: StockPen -> IO HPEN
deletePen :: HPEN -> IO ()
c_DeletePen :: HPEN -> IO Bool
type PenStyle = INT
pS_SOLID :: PenStyle
pS_DASH :: PenStyle
pS_DOT :: PenStyle
pS_DASHDOT :: PenStyle
pS_DASHDOTDOT :: PenStyle
pS_NULL :: PenStyle
pS_INSIDEFRAME :: PenStyle
pS_ENDCAP_ROUND :: PenStyle
pS_USERSTYLE :: PenStyle
pS_ENDCAP_SQUARE :: PenStyle
pS_ALTERNATE :: PenStyle
pS_ENDCAP_FLAT :: PenStyle
pS_STYLE_MASK :: PenStyle
pS_ENDCAP_MASK :: PenStyle
pS_JOIN_ROUND :: PenStyle
pS_JOIN_BEVEL :: PenStyle
pS_JOIN_MITER :: PenStyle
pS_COSMETIC :: PenStyle
pS_GEOMETRIC :: PenStyle
pS_TYPE_MASK :: PenStyle
createPen :: PenStyle -> INT -> COLORREF -> IO HPEN
c_CreatePen :: PenStyle -> INT -> COLORREF -> IO HPEN


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Path
beginPath :: HDC -> IO ()
closeFigure :: HDC -> IO ()
endPath :: HDC -> IO ()
fillPath :: HDC -> IO ()
flattenPath :: HDC -> IO ()
pathToRegion :: HDC -> IO HRGN
strokeAndFillPath :: HDC -> IO ()
strokePath :: HDC -> IO ()
widenPath :: HDC -> IO ()


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Palette
type StockPalette = WORD
dEFAULT_PALETTE :: StockPalette
getStockPalette :: StockPalette -> IO HPALETTE
c_GetStockPalette :: StockPalette -> IO HPALETTE
deletePalette :: HPALETTE -> IO ()
c_DeletePalette :: HPALETTE -> IO Bool


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.HDC
getPixel :: HDC -> Int -> Int -> IO COLORREF
c_GetPixel :: HDC -> Int -> Int -> IO COLORREF
setArcDirection :: HDC -> ArcDirection -> IO ArcDirection
c_SetArcDirection :: HDC -> ArcDirection -> IO ArcDirection
getArcDirection :: HDC -> IO ArcDirection
c_GetArcDirection :: HDC -> IO ArcDirection
setPolyFillMode :: HDC -> PolyFillMode -> IO PolyFillMode
c_SetPolyFillMode :: HDC -> PolyFillMode -> IO PolyFillMode
getPolyFillMode :: HDC -> IO PolyFillMode
c_GetPolyFillMode :: HDC -> IO PolyFillMode
setGraphicsMode :: HDC -> GraphicsMode -> IO GraphicsMode
c_SetGraphicsMode :: HDC -> GraphicsMode -> IO GraphicsMode
getGraphicsMode :: HDC -> IO GraphicsMode
c_GetGraphicsMode :: HDC -> IO GraphicsMode
setStretchBltMode :: HDC -> StretchBltMode -> IO StretchBltMode
c_SetStretchBltMode :: HDC -> StretchBltMode -> IO StretchBltMode
getStretchBltMode :: HDC -> IO StretchBltMode
c_GetStretchBltMode :: HDC -> IO StretchBltMode
setBkColor :: HDC -> COLORREF -> IO COLORREF
c_SetBkColor :: HDC -> COLORREF -> IO COLORREF
getBkColor :: HDC -> IO COLORREF
c_GetBkColor :: HDC -> IO COLORREF
setTextColor :: HDC -> COLORREF -> IO COLORREF
c_SetTextColor :: HDC -> COLORREF -> IO COLORREF
getTextColor :: HDC -> IO COLORREF
c_GetTextColor :: HDC -> IO COLORREF
setBkMode :: HDC -> BackgroundMode -> IO BackgroundMode
c_SetBkMode :: HDC -> BackgroundMode -> IO BackgroundMode
getBkMode :: HDC -> IO BackgroundMode
c_GetBkMode :: HDC -> IO BackgroundMode
setBrushOrgEx :: HDC -> Int -> Int -> IO POINT
c_SetBrushOrgEx :: HDC -> Int -> Int -> Ptr POINT -> IO Bool
getBrushOrgEx :: HDC -> IO POINT
c_GetBrushOrgEx :: HDC -> Ptr POINT -> IO Bool
setTextAlign :: HDC -> TextAlignment -> IO TextAlignment
c_SetTextAlign :: HDC -> TextAlignment -> IO TextAlignment
getTextAlign :: HDC -> IO TextAlignment
c_GetTextAlign :: HDC -> IO TextAlignment
setTextCharacterExtra :: HDC -> Int -> IO Int
c_SetTextCharacterExtra :: HDC -> Int -> IO Int
getTextCharacterExtra :: HDC -> IO Int
c_GetTextCharacterExtra :: HDC -> IO Int
getMiterLimit :: HDC -> IO Float
c_GetMiterLimit :: HDC -> Ptr FLOAT -> IO Bool
setMiterLimit :: HDC -> Float -> IO Float
c_SetMiterLimit :: HDC -> FLOAT -> Ptr FLOAT -> IO Bool
saveDC :: HDC -> IO Int
c_SaveDC :: HDC -> IO Int
restoreDC :: HDC -> Int -> IO ()
c_RestoreDC :: HDC -> Int -> IO Bool
getCurrentBitmap :: HDC -> IO HBITMAP
c_GetCurrentBitmap :: HDC -> UINT -> IO HBITMAP
getCurrentBrush :: HDC -> IO HBRUSH
c_GetCurrentBrush :: HDC -> UINT -> IO HBRUSH
getCurrentFont :: HDC -> IO HFONT
c_GetCurrentFont :: HDC -> UINT -> IO HFONT
getCurrentPalette :: HDC -> IO HPALETTE
c_GetCurrentPalette :: HDC -> UINT -> IO HPALETTE
getCurrentPen :: HDC -> IO HPEN
c_GetCurrentPen :: HDC -> UINT -> IO HPEN
selectBitmap :: HDC -> HBITMAP -> IO HBITMAP
c_SelectBitmap :: HDC -> HBITMAP -> IO HBITMAP
selectBrush :: HDC -> HBRUSH -> IO HBRUSH
c_SelectBrush :: HDC -> HBRUSH -> IO HBRUSH
selectFont :: HDC -> HFONT -> IO HFONT
c_SelectFont :: HDC -> HFONT -> IO HFONT
selectPen :: HDC -> HPEN -> IO HPEN
c_SelectPen :: HDC -> HPEN -> IO HPEN
selectPalette :: HDC -> HPALETTE -> Bool -> IO HPALETTE
c_SelectPalette :: HDC -> HPALETTE -> Bool -> IO HPALETTE
selectRgn :: HDC -> HRGN -> IO RegionType
c_SelectRgn :: HDC -> PRGN -> IO RegionType
selectClipRgn :: HDC -> Maybe HRGN -> IO RegionType
c_SelectClipRgn :: HDC -> PRGN -> IO RegionType
extSelectClipRgn :: HDC -> Maybe HRGN -> ClippingMode -> IO RegionType
c_ExtSelectClipRgn :: HDC -> PRGN -> ClippingMode -> IO RegionType
selectClipPath :: HDC -> ClippingMode -> IO RegionType
c_SelectClipPath :: HDC -> ClippingMode -> IO RegionType
cancelDC :: HDC -> IO ()
c_CancelDC :: HDC -> IO Bool
createCompatibleDC :: Maybe HDC -> IO HDC
c_CreateCompatibleDC :: HDC -> IO HDC
deleteDC :: HDC -> IO ()
c_DeleteDC :: HDC -> IO Bool


-- | 2D graphics operations
module Graphics.Win32.GDI.Graphics2D
moveToEx :: HDC -> Int32 -> Int32 -> IO POINT
c_MoveToEx :: HDC -> Int32 -> Int32 -> Ptr POINT -> IO Bool
lineTo :: HDC -> Int32 -> Int32 -> IO ()
c_LineTo :: HDC -> Int32 -> Int32 -> IO Bool
polyline :: HDC -> [POINT] -> IO ()
c_Polyline :: HDC -> Ptr POINT -> Int -> IO Bool
polylineTo :: HDC -> [POINT] -> IO ()
c_PolylineTo :: HDC -> Ptr POINT -> Int -> IO Bool
polygon :: HDC -> [POINT] -> IO ()
c_Polygon :: HDC -> Ptr POINT -> Int -> IO Bool
polyBezier :: HDC -> [POINT] -> IO ()
c_PolyBezier :: HDC -> Ptr POINT -> Int -> IO Bool
polyBezierTo :: HDC -> [POINT] -> IO ()
c_PolyBezierTo :: HDC -> Ptr POINT -> Int -> IO Bool
arc :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO ()
c_Arc :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO Bool
arcTo :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO ()
c_ArcTo :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO Bool
angleArc :: HDC -> Int32 -> Int32 -> WORD -> Float -> Float -> IO ()
c_AngleArc :: HDC -> Int32 -> Int32 -> WORD -> Float -> Float -> IO Bool
fillRect :: HDC -> RECT -> HBRUSH -> IO ()
c_FillRect :: HDC -> Ptr RECT -> HBRUSH -> IO Bool
frameRect :: HDC -> RECT -> HBRUSH -> IO ()
c_FrameRect :: HDC -> Ptr RECT -> HBRUSH -> IO Bool
invertRect :: HDC -> RECT -> IO ()
c_InvertRect :: HDC -> Ptr RECT -> IO Bool
rectangle :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> IO ()
c_Rectangle :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> IO Bool
roundRect :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO ()
c_RoundRect :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO Bool
ellipse :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> IO ()
c_Ellipse :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> IO Bool
chord :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO ()
c_Chord :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO Bool
pie :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO ()
c_Pie :: HDC -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> Int32 -> IO Bool
bitBlt :: HDC -> INT -> INT -> INT -> INT -> HDC -> INT -> INT -> RasterOp3 -> IO ()
c_BitBlt :: HDC -> INT -> INT -> INT -> INT -> HDC -> INT -> INT -> RasterOp3 -> IO Bool
maskBlt :: HDC -> INT -> INT -> INT -> INT -> HDC -> INT -> INT -> HBITMAP -> INT -> INT -> RasterOp4 -> IO ()
c_MaskBlt :: HDC -> INT -> INT -> INT -> INT -> HDC -> INT -> INT -> HBITMAP -> INT -> INT -> RasterOp4 -> IO Bool
stretchBlt :: HDC -> INT -> INT -> INT -> INT -> HDC -> INT -> INT -> INT -> INT -> RasterOp3 -> IO ()
c_StretchBlt :: HDC -> INT -> INT -> INT -> INT -> HDC -> INT -> INT -> INT -> INT -> RasterOp3 -> IO Bool
plgBlt :: HDC -> POINT -> POINT -> POINT -> HDC -> INT -> INT -> INT -> INT -> MbHBITMAP -> INT -> INT -> IO ()
c_PlgBlt :: HDC -> Ptr POINT -> HDC -> INT -> INT -> INT -> INT -> HBITMAP -> INT -> INT -> IO Bool
textOut :: HDC -> INT -> INT -> String -> IO ()
c_TextOut :: HDC -> INT -> INT -> LPCTSTR -> Int -> IO Bool
getTextExtentPoint32 :: HDC -> String -> IO SIZE
c_GetTextExtentPoint32 :: HDC -> LPCTSTR -> Int -> Ptr SIZE -> IO Bool


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Font
type CharSet = UINT
type PitchAndFamily = UINT
type OutPrecision = UINT
type ClipPrecision = UINT
type FontQuality = UINT
type FontWeight = Word32
type FaceName = String
aNSI_CHARSET :: CharSet
dEFAULT_CHARSET :: CharSet
sYMBOL_CHARSET :: CharSet
sHIFTJIS_CHARSET :: CharSet
hANGEUL_CHARSET :: CharSet
cHINESEBIG5_CHARSET :: CharSet
oEM_CHARSET :: CharSet
dEFAULT_PITCH :: PitchAndFamily
fIXED_PITCH :: PitchAndFamily
vARIABLE_PITCH :: PitchAndFamily
fF_DONTCARE :: PitchAndFamily
fF_ROMAN :: PitchAndFamily
fF_SWISS :: PitchAndFamily
fF_MODERN :: PitchAndFamily
familyMask :: PitchAndFamily
pitchMask :: PitchAndFamily
fF_SCRIPT :: PitchAndFamily
fF_DECORATIVE :: PitchAndFamily
oUT_DEFAULT_PRECIS :: OutPrecision
oUT_STRING_PRECIS :: OutPrecision
oUT_CHARACTER_PRECIS :: OutPrecision
oUT_STROKE_PRECIS :: OutPrecision
oUT_TT_PRECIS :: OutPrecision
oUT_DEVICE_PRECIS :: OutPrecision
cLIP_DEFAULT_PRECIS :: ClipPrecision
oUT_RASTER_PRECIS :: OutPrecision
cLIP_CHARACTER_PRECIS :: ClipPrecision
oUT_TT_ONLY_PRECIS :: OutPrecision
cLIP_STROKE_PRECIS :: ClipPrecision
cLIP_MASK :: ClipPrecision
cLIP_LH_ANGLES :: ClipPrecision
dEFAULT_QUALITY :: FontQuality
cLIP_TT_ALWAYS :: ClipPrecision
dRAFT_QUALITY :: FontQuality
cLIP_EMBEDDED :: ClipPrecision
pROOF_QUALITY :: FontQuality
fW_DONTCARE :: FontWeight
fW_THIN :: FontWeight
fW_EXTRALIGHT :: FontWeight
fW_LIGHT :: FontWeight
fW_NORMAL :: FontWeight
fW_MEDIUM :: FontWeight
fW_SEMIBOLD :: FontWeight
fW_BOLD :: FontWeight
fW_EXTRABOLD :: FontWeight
fW_HEAVY :: FontWeight
fW_REGULAR :: FontWeight
fW_ULTRALIGHT :: FontWeight
fW_DEMIBOLD :: FontWeight
createFont :: INT -> INT -> INT -> INT -> FontWeight -> Bool -> Bool -> Bool -> CharSet -> OutPrecision -> ClipPrecision -> FontQuality -> PitchAndFamily -> FaceName -> IO HFONT
fW_ULTRABOLD :: FontWeight
fW_BLACK :: FontWeight
c_CreateFont :: INT -> INT -> INT -> INT -> FontWeight -> Bool -> Bool -> Bool -> CharSet -> OutPrecision -> ClipPrecision -> FontQuality -> PitchAndFamily -> LPCTSTR -> IO HFONT
deleteFont :: HFONT -> IO ()
type StockFont = WORD
oEM_FIXED_FONT :: StockFont
aNSI_FIXED_FONT :: StockFont
aNSI_VAR_FONT :: StockFont
sYSTEM_FONT :: StockFont
dEVICE_DEFAULT_FONT :: StockFont
getStockFont :: StockFont -> IO HFONT
sYSTEM_FIXED_FONT :: StockFont


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Clip
type ClipboardFormat = UINT
cF_BITMAP :: ClipboardFormat
cF_DIB :: ClipboardFormat
cF_DIF :: ClipboardFormat
cF_DSPBITMAP :: ClipboardFormat
cF_DSPENHMETAFILE :: ClipboardFormat
cF_DSPMETAFILEPICT :: ClipboardFormat
cF_DSPTEXT :: ClipboardFormat
cF_ENHMETAFILE :: ClipboardFormat
cF_GDIOBJFIRST :: ClipboardFormat
cF_HDROP :: ClipboardFormat
cF_LOCALE :: ClipboardFormat
cF_METAFILEPICT :: ClipboardFormat
cF_OEMTEXT :: ClipboardFormat
cF_OWNERDISPLAY :: ClipboardFormat
cF_PALETTE :: ClipboardFormat
cF_PENDATA :: ClipboardFormat
cF_PRIVATEFIRST :: ClipboardFormat
cF_PRIVATELAST :: ClipboardFormat
cF_RIFF :: ClipboardFormat
cF_SYLK :: ClipboardFormat
cF_TEXT :: ClipboardFormat
cF_WAVE :: ClipboardFormat
cF_TIFF :: ClipboardFormat
cF_DIBV5 :: ClipboardFormat
cF_GDIOBJLAST :: ClipboardFormat
cF_UNICODETEXT :: ClipboardFormat
wM_CLIPBOARDUPDATE :: WindowMessage
changeClipboardChain :: HWND -> HWND -> IO Bool
closeClipboard :: IO ()
c_CloseClipboard :: IO BOOL
countClipboardFormats :: IO Int
emptyClipboard :: IO ()
c_EmptyClipboard :: IO BOOL
enumClipboardFormats :: ClipboardFormat -> IO ClipboardFormat
c_EnumClipboardFormats :: ClipboardFormat -> IO ClipboardFormat
getClipboardData :: ClipboardFormat -> IO HANDLE
c_GetClipboardData :: ClipboardFormat -> IO HANDLE
getClipboardFormatName :: ClipboardFormat -> IO String
c_GetClipboardFormatName :: ClipboardFormat -> LPTSTR -> Int -> IO Int
getClipboardOwner :: IO HWND
c_GetClipboardOwner :: IO HWND
getClipboardViewer :: IO HWND
c_GetClipboardViewer :: IO HWND
getOpenClipboardWindow :: IO HWND
c_GetOpenClipboardWindow :: IO HWND
getPriorityClipboardFormat :: [ClipboardFormat] -> IO Int
c_GetPriorityClipboardFormat :: Ptr UINT -> Int -> IO Int
isClipboardFormatAvailable :: ClipboardFormat -> IO BOOL
openClipboard :: HWND -> IO ()
c_OpenClipboard :: HWND -> IO BOOL
registerClipboardFormat :: String -> IO ClipboardFormat
c_RegisterClipboardFormat :: LPCTSTR -> IO ClipboardFormat
setClipboardData :: ClipboardFormat -> HANDLE -> IO HANDLE
c_SetClipboardData :: ClipboardFormat -> HANDLE -> IO HANDLE
setClipboardViewer :: HWND -> IO HWND
c_SetClipboardViewer :: HWND -> IO HWND


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Brush
createSolidBrush :: COLORREF -> IO HBRUSH
c_CreateSolidBrush :: COLORREF -> IO HBRUSH
createHatchBrush :: HatchStyle -> COLORREF -> IO HBRUSH
c_CreateHatchBrush :: HatchStyle -> COLORREF -> IO HBRUSH
createPatternBrush :: HBITMAP -> IO HBRUSH
c_CreatePatternBrush :: HBITMAP -> IO HBRUSH
deleteBrush :: HBRUSH -> IO ()
c_DeleteBrush :: HBRUSH -> IO Bool
type StockBrush = INT
wHITE_BRUSH :: StockBrush
lTGRAY_BRUSH :: StockBrush
gRAY_BRUSH :: StockBrush
dKGRAY_BRUSH :: StockBrush
bLACK_BRUSH :: StockBrush
nULL_BRUSH :: StockBrush
hOLLOW_BRUSH :: StockBrush
getStockBrush :: StockBrush -> IO HBRUSH
c_GetStockBrush :: StockBrush -> IO HBRUSH


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.GDI.Bitmap
type RasterOp3 = Word32
type RasterOp4 = Word32
sRCCOPY :: RasterOp3
sRCPAINT :: RasterOp3
sRCAND :: RasterOp3
sRCINVERT :: RasterOp3
sRCERASE :: RasterOp3
nOTSRCCOPY :: RasterOp3
nOTSRCERASE :: RasterOp3
mERGECOPY :: RasterOp3
mERGEPAINT :: RasterOp3
pATCOPY :: RasterOp3
pATPAINT :: RasterOp3
pATINVERT :: RasterOp3
dSTINVERT :: RasterOp3
bLACKNESS :: RasterOp3
wHITENESS :: RasterOp3
mAKEROP4 :: RasterOp3 -> RasterOp3 -> RasterOp4
type BITMAP = (INT, INT, INT, INT, WORD, WORD, LPVOID)
type LPBITMAP = Ptr BITMAP
setBITMAP :: LPBITMAP -> BITMAP -> IO ()
deleteBitmap :: HBITMAP -> IO ()
createCompatibleBitmap :: HDC -> Int32 -> Int32 -> IO HBITMAP
createBitmap :: INT -> INT -> UINT -> UINT -> Maybe LPVOID -> IO HBITMAP
createBitmapIndirect :: LPBITMAP -> IO HBITMAP
createDIBPatternBrushPt :: LPVOID -> ColorFormat -> IO HBRUSH
getBitmapDimensionEx :: HBITMAP -> IO SIZE
setBitmapDimensionEx :: HBITMAP -> SIZE -> IO SIZE
getBitmapInfo :: HBITMAP -> IO BITMAP
type BitmapCompression = DWORD
bI_RGB :: BitmapCompression
bI_RLE8 :: BitmapCompression
bI_RLE4 :: BitmapCompression
bI_BITFIELDS :: BitmapCompression
type ColorFormat = DWORD
dIB_PAL_COLORS :: ColorFormat
dIB_RGB_COLORS :: ColorFormat
type LPBITMAPINFO = Ptr ()
type BITMAPINFOHEADER = (DWORD, LONG, LONG, WORD, WORD, BitmapCompression, DWORD, LONG, LONG, Maybe DWORD, Maybe DWORD)
type LPBITMAPINFOHEADER = Ptr BITMAPINFOHEADER
getBITMAPINFOHEADER_ :: LPBITMAPINFOHEADER -> IO BITMAPINFOHEADER
type BITMAPFILEHEADER = (WORD, DWORD, WORD, WORD, DWORD)
type LPBITMAPFILEHEADER = Ptr BITMAPFILEHEADER
getBITMAPFILEHEADER :: LPBITMAPFILEHEADER -> IO BITMAPFILEHEADER
sizeofBITMAP :: Word32
sizeofBITMAPINFO :: Word32
sizeofBITMAPINFOHEADER :: Word32
sizeofBITMAPFILEHEADER :: Word32
sizeofLPBITMAPFILEHEADER :: Word32
createBMPFile :: String -> HBITMAP -> HDC -> IO ()
cBM_INIT :: DWORD
getDIBits :: HDC -> HBITMAP -> INT -> INT -> Maybe LPVOID -> LPBITMAPINFO -> ColorFormat -> IO INT
setDIBits :: HDC -> HBITMAP -> INT -> INT -> LPVOID -> LPBITMAPINFO -> ColorFormat -> IO INT
createDIBitmap :: HDC -> LPBITMAPINFOHEADER -> DWORD -> LPVOID -> LPBITMAPINFO -> ColorFormat -> IO HBITMAP


-- | An interface to the Microsoft Windows graphics device interface (GDI).
--   See <a>http://msdn.microsoft.com/library/</a> under <i>Graphics and
--   Multimedia</i> for more details of the underlying library.
module Graphics.Win32.GDI


-- | Provides alpha blending functionality.
module Graphics.Win32.GDI.AlphaBlend
c_AlphaBlend :: HDC -> Int -> Int -> Int -> Int -> HDC -> Int -> Int -> Int -> Int -> PBLENDFUNCTION -> IO BOOL
c_TransparentBlt :: HDC -> Int -> Int -> Int -> Int -> HDC -> Int -> Int -> Int -> Int -> UINT -> IO BOOL
aC_SRC_OVER :: BYTE
aC_SRC_ALPHA :: BYTE
type PBLENDFUNCTION = Ptr BLENDFUNCTION
type LPBLENDFUNCTION = Ptr BLENDFUNCTION
data BLENDFUNCTION
BLENDFUNCTION :: BYTE -> BYTE -> BYTE -> BYTE -> BLENDFUNCTION
[blendOp] :: BLENDFUNCTION -> BYTE
[blendFlags] :: BLENDFUNCTION -> BYTE
[sourceConstantAlpha] :: BLENDFUNCTION -> BYTE
[alphaFormat] :: BLENDFUNCTION -> BYTE
instance GHC.Show.Show Graphics.Win32.GDI.AlphaBlend.BLENDFUNCTION
instance Foreign.Storable.Storable Graphics.Win32.GDI.AlphaBlend.BLENDFUNCTION


-- | Provides LayeredWindow functionality.
module Graphics.Win32.LayeredWindow
toLayeredWindow :: HANDLE -> IO ()
gWL_EXSTYLE :: INT
wS_EX_LAYERED :: WindowStyleEx
lWA_COLORKEY :: DWORD
lWA_ALPHA :: DWORD
c_SetLayeredWindowAttributes :: HANDLE -> COLORREF -> BYTE -> DWORD -> IO BOOL
c_GetLayeredWindowAttributes :: HANDLE -> COLORREF -> Ptr BYTE -> Ptr DWORD -> IO BOOL
c_UpdateLayeredWindow :: HANDLE -> HDC -> Ptr POINT -> Ptr SIZE -> HDC -> Ptr POINT -> COLORREF -> Ptr BLENDFUNCTION -> DWORD -> IO BOOL
uLW_ALPHA :: DWORD
uLW_COLORKEY :: DWORD
uLW_OPAQUE :: DWORD
c_GetWindowLongPtr :: HANDLE -> INT -> IO LONG_PTR


-- | FFI bindings to the various standard Win32 controls.
module Graphics.Win32.Control
type ButtonStyle = WindowStyle
bS_PUSHBUTTON :: ButtonStyle
bS_DEFPUSHBUTTON :: ButtonStyle
bS_CHECKBOX :: ButtonStyle
bS_AUTOCHECKBOX :: ButtonStyle
bS_RADIOBUTTON :: ButtonStyle
bS_3STATE :: ButtonStyle
bS_AUTO3STATE :: ButtonStyle
bS_GROUPBOX :: ButtonStyle
bS_AUTORADIOBUTTON :: ButtonStyle
bS_OWNERDRAW :: ButtonStyle
bS_LEFTTEXT :: ButtonStyle
bS_USERBUTTON :: ButtonStyle
createButton :: String -> WindowStyle -> ButtonStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HANDLE -> IO HWND
buttonStyle :: ClassName
type ButtonState = UINT
bST_CHECKED :: ButtonState
bST_INDETERMINATE :: ButtonState
bST_UNCHECKED :: ButtonState
checkDlgButton :: HWND -> Int -> ButtonState -> IO ()
c_CheckDlgButton :: HWND -> Int -> ButtonState -> IO Bool
checkRadioButton :: HWND -> Int -> Int -> Int -> IO ()
c_CheckRadioButton :: HWND -> Int -> Int -> Int -> IO Bool
isDlgButtonChecked :: HWND -> Int -> IO ButtonState
c_IsDlgButtonChecked :: HWND -> Int -> IO ButtonState
type ComboBoxStyle = WindowStyle
cBS_SIMPLE :: ComboBoxStyle
cBS_DROPDOWN :: ComboBoxStyle
cBS_DROPDOWNLIST :: ComboBoxStyle
cBS_OWNERDRAWFIXED :: ComboBoxStyle
cBS_OWNERDRAWVARIABLE :: ComboBoxStyle
cBS_AUTOHSCROLL :: ComboBoxStyle
cBS_OEMCONVERT :: ComboBoxStyle
cBS_SORT :: ComboBoxStyle
createComboBox :: String -> WindowStyle -> ComboBoxStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND
cBS_HASSTRINGS :: ComboBoxStyle
cBS_NOINTEGRALHEIGHT :: ComboBoxStyle
cBS_DISABLENOSCROLL :: ComboBoxStyle
comboBoxStyle :: ClassName
type EditStyle = WindowStyle
eS_LEFT :: EditStyle
eS_CENTER :: EditStyle
eS_RIGHT :: EditStyle
eS_MULTILINE :: EditStyle
eS_UPPERCASE :: EditStyle
eS_LOWERCASE :: EditStyle
eS_PASSWORD :: EditStyle
eS_AUTOVSCROLL :: EditStyle
eS_AUTOHSCROLL :: EditStyle
createEditWindow :: String -> WindowStyle -> EditStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND
eS_NOHIDESEL :: EditStyle
eS_OEMCONVERT :: EditStyle
eS_READONLY :: EditStyle
eS_WANTRETURN :: EditStyle
editStyle :: ClassName
type ListBoxStyle = WindowStyle
lBS_NOTIFY :: ListBoxStyle
lBS_SORT :: ListBoxStyle
lBS_NOREDRAW :: ListBoxStyle
lBS_MULTIPLESEL :: ListBoxStyle
lBS_OWNERDRAWFIXED :: ListBoxStyle
lBS_OWNERDRAWVARIABLE :: ListBoxStyle
lBS_HASSTRINGS :: ListBoxStyle
lBS_USETABSTOPS :: ListBoxStyle
lBS_NOINTEGRALHEIGHT :: ListBoxStyle
createListBox :: String -> WindowStyle -> ListBoxStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND
lBS_MULTICOLUMN :: ListBoxStyle
lBS_WANTKEYBOARDINPUT :: ListBoxStyle
lBS_DISABLENOSCROLL :: ListBoxStyle
lBS_STANDARD :: ListBoxStyle
listBoxStyle :: ClassName
type ScrollbarStyle = WindowStyle
sBS_HORZ :: ScrollbarStyle
sBS_TOPALIGN :: ScrollbarStyle
sBS_BOTTOMALIGN :: ScrollbarStyle
sBS_VERT :: ScrollbarStyle
sBS_LEFTALIGN :: ScrollbarStyle
sBS_RIGHTALIGN :: ScrollbarStyle
sBS_SIZEBOX :: ScrollbarStyle
createScrollbar :: String -> WindowStyle -> ScrollbarStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND
sBS_SIZEBOXTOPLEFTALIGN :: ScrollbarStyle
sBS_SIZEBOXBOTTOMRIGHTALIGN :: ScrollbarStyle
scrollBarStyle :: ClassName
type StaticControlStyle = WindowStyle
sS_LEFT :: StaticControlStyle
sS_CENTER :: StaticControlStyle
sS_RIGHT :: StaticControlStyle
sS_ICON :: StaticControlStyle
sS_BLACKRECT :: StaticControlStyle
sS_GRAYRECT :: StaticControlStyle
sS_WHITERECT :: StaticControlStyle
sS_BLACKFRAME :: StaticControlStyle
sS_GRAYFRAME :: StaticControlStyle
createStaticWindow :: String -> WindowStyle -> StaticControlStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND
sS_WHITEFRAME :: StaticControlStyle
sS_SIMPLE :: StaticControlStyle
sS_LEFTNOWORDWRAP :: StaticControlStyle
sS_NOPREFIX :: StaticControlStyle
staticStyle :: ClassName
pBM_DELTAPOS :: WindowMessage
pBM_SETPOS :: WindowMessage
pBM_SETRANGE :: WindowMessage
pBM_SETSTEP :: WindowMessage
pBM_STEPIT :: WindowMessage


-- | A collection of FFI declarations for interfacing with Win32.
module Graphics.Win32.Dialogue
type DTemplate = LPCTSTR
type DTemplateMem = Ptr Stub_DTM
newtype Stub_DTM
Stub_DTM :: DTemplateMem -> Stub_DTM
newtype DIA_TEMPLATE
DIA_TEMPLATE :: Ptr DIA_TEMPLATE -> DIA_TEMPLATE
type DialogStyle = WindowStyle
mkDialogTemplate :: String -> IO DTemplate
type ResourceID = Int
mkResource :: ResourceID -> IO (Ptr a)
mkDialogTemplateFromResource :: Int -> IO DTemplate
type DialogProc = HWND -> WindowMessage -> WPARAM -> LPARAM -> IO Int
marshall_dialogProc_ :: DialogProc -> IO (FunPtr DialogProc)
mkDialogClosure :: DialogProc -> IO (FunPtr DialogProc)
dialogBox :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> IO Int
dialogBoxParam :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> LPARAM -> IO Int
c_DialogBoxParam :: HINSTANCE -> DTemplate -> HWND -> FunPtr DialogProc -> LPARAM -> IO Int
dialogBoxIndirect :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> IO Int
dialogBoxIndirectParam :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> LPARAM -> IO Int
c_DialogBoxIndirectParam :: HINSTANCE -> DTemplateMem -> HWND -> FunPtr DialogProc -> LPARAM -> IO Int
data DialogTemplate
DialogTemplate :: Int -> Int -> Int -> Int -> WindowStyle -> DWORD -> Either ResourceID String -> Either ResourceID String -> Either ResourceID String -> Either ResourceID String -> Int -> [DialogControl] -> DialogTemplate
data DialogControl
DialogControl :: Int -> Int -> Int -> Int -> Either ResourceID String -> Either ResourceID String -> WindowStyle -> DWORD -> Int -> DialogControl
mkDialogFromTemplate :: DialogTemplate -> IO DTemplateMem
pushButtonControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl
labelControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl
listBoxControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl
comboBoxControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl
editControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl
scrollBarControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl
getFinalDialog :: Ptr DIA_TEMPLATE -> IO DTemplateMem
mkDiaTemplate :: Int -> Int -> Int -> Int -> Int -> WindowStyle -> DWORD -> LPCWSTR -> LPCWSTR -> LPCWSTR -> LPCWSTR -> Int -> IO (Ptr DIA_TEMPLATE)
addControl :: Ptr DIA_TEMPLATE -> DialogControl -> IO ()
addDiaControl :: Ptr DIA_TEMPLATE -> LPCWSTR -> Int -> LPCWSTR -> DWORD -> Int -> Int -> Int -> Int -> DWORD -> IO (Ptr DIA_TEMPLATE)
marshall_res :: Either ResourceID String -> IO LPCWSTR
createDialog :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> IO HWND
createDialogParam :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> LPARAM -> IO HWND
c_CreateDialogParam :: HINSTANCE -> DTemplate -> HWND -> FunPtr DialogProc -> LPARAM -> IO HWND
createDialogIndirect :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> IO HWND
createDialogIndirectParam :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> LPARAM -> IO HWND
c_CreateDialogIndirectParam :: HINSTANCE -> DTemplateMem -> HWND -> FunPtr DialogProc -> LPARAM -> IO HWND
defDlgProc :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT
endDialog :: HWND -> Int -> IO ()
c_EndDialog :: HWND -> Int -> IO BOOL
getDialogBaseUnits :: IO LONG
getDlgCtrlID :: HWND -> IO Int
c_GetDlgCtrlID :: HWND -> IO Int
getDlgItem :: HWND -> Int -> IO HWND
c_GetDlgItem :: HWND -> Int -> IO HWND
getDlgItemInt :: HWND -> Int -> Bool -> IO Int
c_GetDlgItemInt :: HWND -> Int -> Ptr Bool -> Bool -> IO UINT
getDlgItemText :: HWND -> Int -> Int -> IO String
c_GetDlgItemText :: HWND -> Int -> LPTSTR -> Int -> IO Int
getNextDlgGroupItem :: HWND -> HWND -> BOOL -> IO HWND
c_GetNextDlgGroupItem :: HWND -> HWND -> BOOL -> IO HWND
getNextDlgTabItem :: HWND -> HWND -> BOOL -> IO HWND
c_GetNextDlgTabItem :: HWND -> HWND -> BOOL -> IO HWND
isDialogMessage :: HWND -> LPMSG -> IO BOOL
mapDialogRect :: HWND -> LPRECT -> IO ()
c_MapDialogRect :: HWND -> LPRECT -> IO Bool
sendDlgItemMessage :: HWND -> Int -> WindowMessage -> WPARAM -> LPARAM -> IO LONG
setDlgItemInt :: HWND -> Int -> UINT -> BOOL -> IO ()
c_SetDlgItemInt :: HWND -> Int -> UINT -> BOOL -> IO Bool
setDlgItemText :: HWND -> Int -> String -> IO ()
c_SetDlgItemText :: HWND -> Int -> LPCTSTR -> IO Bool
dS_3DLOOK :: WindowStyle
dS_ABSALIGN :: WindowStyle
dS_CENTER :: WindowStyle
dS_CENTERMOUSE :: WindowStyle
dS_CONTEXTHELP :: WindowStyle
dS_CONTROL :: WindowStyle
dS_FIXEDSYS :: WindowStyle
dS_LOCALEDIT :: WindowStyle
dS_MODALFRAME :: WindowStyle
dS_NOFAILCREATE :: WindowStyle
dS_NOIDLEMSG :: WindowStyle
dS_SETFONT :: WindowStyle
dS_SETFOREGROUND :: WindowStyle
dS_SYSMODAL :: WindowStyle
dM_GETDEFID :: WindowMessage
dM_REPOSITION :: WindowMessage
dM_SETDEFID :: WindowMessage
wM_CTLCOLORDLG :: WindowMessage
wM_CTLCOLORMSGBOX :: WindowMessage


-- | Windows' unsigned integer types and pointer type.
module System.Win32.Word
type WORD = Word16
type DWORD = Word32
type PDWORD = Ptr DWORD
type LPDWORD = Ptr DWORD
type DWORDLONG = Word64
type DDWORD = Word64
type DWORD32 = Word32
type DWORD64 = Word64
type DWORD_PTR = ULONG_PTR


-- | Utilities for calling Win32 API
module System.Win32.Utils

-- | Support for API calls that are passed a fixed-size buffer and tell you
--   via the return value if the buffer was too small. In that case, we
--   extend the buffer size and try again.
try :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String
tryWithoutNull :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String

-- | Support for API calls that return the required size, in characters
--   including a null character, of the buffer when passed a buffer size of
--   zero.
trySized :: String -> (LPTSTR -> CInt -> IO CInt) -> IO String
try' :: Storable a => String -> (Ptr a -> PDWORD -> IO BOOL) -> DWORD -> IO [a]
maybePtr :: Maybe (Ptr a) -> Ptr a
ptrToMaybe :: Ptr a -> Maybe (Ptr a)
maybeNum :: Num a => Maybe a -> a
numToMaybe :: (Eq a, Num a) => a -> Maybe a

-- | See also: <a>maybePeek</a> function.
peekMaybe :: Storable a => Ptr a -> IO (Maybe a)

-- | See also: <a>maybeWith</a> function.
withMaybe :: Storable a => Maybe a -> (Ptr a -> IO b) -> IO b

-- | Translate from a Windows API day, month, year, and era format picture
--   to the closest corresponding format string used by <a>formatTime</a>.
fromDateFormatPicture :: String -> Maybe String

-- | Translate from a Windows API hours, minute, and second format picture
--   to the closest corresponding format string used by <a>formatTime</a>.
fromTimeFormatPicture :: String -> Maybe String
instance GHC.Show.Show System.Win32.Utils.DateFormatPicture
instance GHC.Classes.Eq System.Win32.Utils.DateFormatPicture
instance GHC.Show.Show System.Win32.Utils.TimeFormatPicture
instance GHC.Classes.Eq System.Win32.Utils.TimeFormatPicture


-- | A collection of FFI declarations for interfacing with Win32 Time API.
module System.Win32.Time
newtype FILETIME
FILETIME :: DDWORD -> FILETIME
data SYSTEMTIME
SYSTEMTIME :: WORD -> SYSTEMTIME
[wYear, wMonth, wDayOfWeek, wDay, wHour, wMinute, wSecond, wMilliseconds] :: SYSTEMTIME -> WORD
data TIME_ZONE_INFORMATION
TIME_ZONE_INFORMATION :: LONG -> String -> SYSTEMTIME -> LONG -> String -> SYSTEMTIME -> LONG -> TIME_ZONE_INFORMATION
[tziBias] :: TIME_ZONE_INFORMATION -> LONG
[tziStandardName] :: TIME_ZONE_INFORMATION -> String
[tziStandardDate] :: TIME_ZONE_INFORMATION -> SYSTEMTIME
[tziStandardBias] :: TIME_ZONE_INFORMATION -> LONG
[tziDaylightName] :: TIME_ZONE_INFORMATION -> String
[tziDaylightDate] :: TIME_ZONE_INFORMATION -> SYSTEMTIME
[tziDaylightBias] :: TIME_ZONE_INFORMATION -> LONG
data TimeZoneId
TzIdUnknown :: TimeZoneId
TzIdStandard :: TimeZoneId
TzIdDaylight :: TimeZoneId
getSystemTime :: IO SYSTEMTIME
setSystemTime :: SYSTEMTIME -> IO ()
getSystemTimeAsFileTime :: IO FILETIME
getLocalTime :: IO SYSTEMTIME
setLocalTime :: SYSTEMTIME -> IO ()
getSystemTimeAdjustment :: IO (Maybe (Int, Int))
getTickCount :: IO DWORD
getLastInputInfo :: IO DWORD
getIdleTime :: IO Integer
setSystemTimeAdjustment :: Maybe Int -> IO ()
getTimeZoneInformation :: IO (TimeZoneId, TIME_ZONE_INFORMATION)
systemTimeToFileTime :: SYSTEMTIME -> IO FILETIME
fileTimeToSystemTime :: FILETIME -> IO SYSTEMTIME
getFileTime :: HANDLE -> IO (FILETIME, FILETIME, FILETIME)
setFileTime :: HANDLE -> Maybe FILETIME -> Maybe FILETIME -> Maybe FILETIME -> IO ()
invalidFileTime :: FILETIME
fileTimeToLocalFileTime :: FILETIME -> IO FILETIME
localFileTimeToFileTime :: FILETIME -> IO FILETIME
queryPerformanceFrequency :: IO Integer
queryPerformanceCounter :: IO Integer
type GetTimeFormatFlags = DWORD
lOCALE_NOUSEROVERRIDE :: GetTimeFormatFlags
lOCALE_USE_CP_ACP :: GetTimeFormatFlags
tIME_NOMINUTESORSECONDS :: GetTimeFormatFlags
tIME_NOSECONDS :: GetTimeFormatFlags
tIME_NOTIMEMARKER :: GetTimeFormatFlags
tIME_FORCE24HOURFORMAT :: GetTimeFormatFlags
getTimeFormatEx :: Maybe String -> GetTimeFormatFlags -> Maybe SYSTEMTIME -> Maybe String -> IO String
getTimeFormat :: LCID -> GetTimeFormatFlags -> Maybe SYSTEMTIME -> Maybe String -> IO String
instance GHC.Classes.Ord System.Win32.Time.FILETIME
instance GHC.Classes.Eq System.Win32.Time.FILETIME
instance GHC.Show.Show System.Win32.Time.FILETIME
instance GHC.Classes.Ord System.Win32.Time.SYSTEMTIME
instance GHC.Classes.Eq System.Win32.Time.SYSTEMTIME
instance GHC.Show.Show System.Win32.Time.SYSTEMTIME
instance GHC.Classes.Ord System.Win32.Time.TIME_ZONE_INFORMATION
instance GHC.Classes.Eq System.Win32.Time.TIME_ZONE_INFORMATION
instance GHC.Show.Show System.Win32.Time.TIME_ZONE_INFORMATION
instance GHC.Classes.Ord System.Win32.Time.TimeZoneId
instance GHC.Classes.Eq System.Win32.Time.TimeZoneId
instance GHC.Show.Show System.Win32.Time.TimeZoneId
instance GHC.Show.Show System.Win32.Time.LASTINPUTINFO
instance Foreign.Storable.Storable System.Win32.Time.LASTINPUTINFO
instance Foreign.Storable.Storable System.Win32.Time.TIME_ZONE_INFORMATION
instance Foreign.Storable.Storable System.Win32.Time.SYSTEMTIME
instance Foreign.Storable.Storable System.Win32.Time.FILETIME


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.File
type AccessMode = UINT
gENERIC_NONE :: AccessMode
gENERIC_READ :: AccessMode
gENERIC_WRITE :: AccessMode
gENERIC_EXECUTE :: AccessMode
gENERIC_ALL :: AccessMode
dELETE :: AccessMode
rEAD_CONTROL :: AccessMode
wRITE_DAC :: AccessMode
wRITE_OWNER :: AccessMode
sYNCHRONIZE :: AccessMode
sTANDARD_RIGHTS_REQUIRED :: AccessMode
sTANDARD_RIGHTS_READ :: AccessMode
sTANDARD_RIGHTS_WRITE :: AccessMode
sTANDARD_RIGHTS_EXECUTE :: AccessMode
sTANDARD_RIGHTS_ALL :: AccessMode
sPECIFIC_RIGHTS_ALL :: AccessMode
aCCESS_SYSTEM_SECURITY :: AccessMode
mAXIMUM_ALLOWED :: AccessMode
fILE_ADD_FILE :: AccessMode
fILE_ADD_SUBDIRECTORY :: AccessMode
fILE_ALL_ACCESS :: AccessMode
fILE_APPEND_DATA :: AccessMode
fILE_CREATE_PIPE_INSTANCE :: AccessMode
fILE_DELETE_CHILD :: AccessMode
fILE_EXECUTE :: AccessMode
fILE_LIST_DIRECTORY :: AccessMode
fILE_READ_ATTRIBUTES :: AccessMode
fILE_READ_DATA :: AccessMode
fILE_READ_EA :: AccessMode
fILE_TRAVERSE :: AccessMode
fILE_WRITE_ATTRIBUTES :: AccessMode
fILE_WRITE_DATA :: AccessMode
fILE_WRITE_EA :: AccessMode
type ShareMode = UINT
fILE_SHARE_NONE :: ShareMode
fILE_SHARE_READ :: ShareMode
fILE_SHARE_WRITE :: ShareMode
fILE_SHARE_DELETE :: ShareMode
type CreateMode = UINT
cREATE_NEW :: CreateMode
cREATE_ALWAYS :: CreateMode
oPEN_EXISTING :: CreateMode
oPEN_ALWAYS :: CreateMode
tRUNCATE_EXISTING :: CreateMode
type FileAttributeOrFlag = UINT
fILE_ATTRIBUTE_READONLY :: FileAttributeOrFlag
fILE_ATTRIBUTE_HIDDEN :: FileAttributeOrFlag
fILE_ATTRIBUTE_SYSTEM :: FileAttributeOrFlag
fILE_ATTRIBUTE_DIRECTORY :: FileAttributeOrFlag
fILE_ATTRIBUTE_ARCHIVE :: FileAttributeOrFlag
fILE_ATTRIBUTE_NORMAL :: FileAttributeOrFlag
fILE_ATTRIBUTE_TEMPORARY :: FileAttributeOrFlag
fILE_ATTRIBUTE_COMPRESSED :: FileAttributeOrFlag
fILE_ATTRIBUTE_REPARSE_POINT :: FileAttributeOrFlag
fILE_FLAG_WRITE_THROUGH :: FileAttributeOrFlag
fILE_FLAG_OVERLAPPED :: FileAttributeOrFlag
fILE_FLAG_NO_BUFFERING :: FileAttributeOrFlag
fILE_FLAG_RANDOM_ACCESS :: FileAttributeOrFlag
fILE_FLAG_SEQUENTIAL_SCAN :: FileAttributeOrFlag
fILE_FLAG_DELETE_ON_CLOSE :: FileAttributeOrFlag
fILE_FLAG_BACKUP_SEMANTICS :: FileAttributeOrFlag
fILE_FLAG_POSIX_SEMANTICS :: FileAttributeOrFlag
sECURITY_ANONYMOUS :: FileAttributeOrFlag
sECURITY_IDENTIFICATION :: FileAttributeOrFlag
sECURITY_IMPERSONATION :: FileAttributeOrFlag
sECURITY_DELEGATION :: FileAttributeOrFlag
sECURITY_CONTEXT_TRACKING :: FileAttributeOrFlag
sECURITY_EFFECTIVE_ONLY :: FileAttributeOrFlag
sECURITY_SQOS_PRESENT :: FileAttributeOrFlag
sECURITY_VALID_SQOS_FLAGS :: FileAttributeOrFlag
type MoveFileFlag = DWORD
mOVEFILE_REPLACE_EXISTING :: MoveFileFlag
mOVEFILE_COPY_ALLOWED :: MoveFileFlag
mOVEFILE_DELAY_UNTIL_REBOOT :: MoveFileFlag
type FilePtrDirection = DWORD
fILE_BEGIN :: FilePtrDirection
fILE_CURRENT :: FilePtrDirection
fILE_END :: FilePtrDirection
type DriveType = UINT
dRIVE_UNKNOWN :: DriveType
dRIVE_NO_ROOT_DIR :: DriveType
dRIVE_REMOVABLE :: DriveType
dRIVE_FIXED :: DriveType
dRIVE_REMOTE :: DriveType
dRIVE_CDROM :: DriveType
dRIVE_RAMDISK :: DriveType
type DefineDosDeviceFlags = DWORD
dDD_RAW_TARGET_PATH :: DefineDosDeviceFlags
dDD_REMOVE_DEFINITION :: DefineDosDeviceFlags
dDD_EXACT_MATCH_ON_REMOVE :: DefineDosDeviceFlags
type BinaryType = DWORD
sCS_32BIT_BINARY :: BinaryType
sCS_DOS_BINARY :: BinaryType
sCS_WOW_BINARY :: BinaryType
sCS_PIF_BINARY :: BinaryType
sCS_POSIX_BINARY :: BinaryType
sCS_OS216_BINARY :: BinaryType
type FileNotificationFlag = DWORD
fILE_NOTIFY_CHANGE_FILE_NAME :: FileNotificationFlag
fILE_NOTIFY_CHANGE_DIR_NAME :: FileNotificationFlag
fILE_NOTIFY_CHANGE_ATTRIBUTES :: FileNotificationFlag
fILE_NOTIFY_CHANGE_SIZE :: FileNotificationFlag
fILE_NOTIFY_CHANGE_LAST_WRITE :: FileNotificationFlag
fILE_NOTIFY_CHANGE_SECURITY :: FileNotificationFlag
type FileType = DWORD
fILE_TYPE_UNKNOWN :: FileType
fILE_TYPE_DISK :: FileType
fILE_TYPE_CHAR :: FileType
fILE_TYPE_PIPE :: FileType
fILE_TYPE_REMOTE :: FileType
type LockMode = DWORD
lOCKFILE_EXCLUSIVE_LOCK :: LockMode
lOCKFILE_FAIL_IMMEDIATELY :: LockMode
data GET_FILEEX_INFO_LEVELS
getFileExInfoStandard :: GET_FILEEX_INFO_LEVELS
getFileExMaxInfoLevel :: GET_FILEEX_INFO_LEVELS
data SECURITY_ATTRIBUTES
SECURITY_ATTRIBUTES :: !DWORD -> !LPVOID -> !BOOL -> SECURITY_ATTRIBUTES
[nLength] :: SECURITY_ATTRIBUTES -> !DWORD
[lpSecurityDescriptor] :: SECURITY_ATTRIBUTES -> !LPVOID
[bInheritHandle] :: SECURITY_ATTRIBUTES -> !BOOL
type PSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES
type LPSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES
type MbLPSECURITY_ATTRIBUTES = Maybe LPSECURITY_ATTRIBUTES
data BY_HANDLE_FILE_INFORMATION
BY_HANDLE_FILE_INFORMATION :: FileAttributeOrFlag -> FILETIME -> DWORD -> DDWORD -> DWORD -> DDWORD -> BY_HANDLE_FILE_INFORMATION
[bhfiFileAttributes] :: BY_HANDLE_FILE_INFORMATION -> FileAttributeOrFlag
[bhfiCreationTime, bhfiLastAccessTime, bhfiLastWriteTime] :: BY_HANDLE_FILE_INFORMATION -> FILETIME
[bhfiVolumeSerialNumber] :: BY_HANDLE_FILE_INFORMATION -> DWORD
[bhfiSize] :: BY_HANDLE_FILE_INFORMATION -> DDWORD
[bhfiNumberOfLinks] :: BY_HANDLE_FILE_INFORMATION -> DWORD
[bhfiFileIndex] :: BY_HANDLE_FILE_INFORMATION -> DDWORD
data WIN32_FILE_ATTRIBUTE_DATA
WIN32_FILE_ATTRIBUTE_DATA :: DWORD -> FILETIME -> DDWORD -> WIN32_FILE_ATTRIBUTE_DATA
[fadFileAttributes] :: WIN32_FILE_ATTRIBUTE_DATA -> DWORD
[fadCreationTime, fadLastAccessTime, fadLastWriteTime] :: WIN32_FILE_ATTRIBUTE_DATA -> FILETIME
[fadFileSize] :: WIN32_FILE_ATTRIBUTE_DATA -> DDWORD

-- | like failIfFalse_, but retried on sharing violations. This is
--   necessary for many file operations; see
--   <a>http://support.microsoft.com/kb/316609</a>
failIfWithRetry :: (a -> Bool) -> String -> IO a -> IO a
failIfWithRetry_ :: (a -> Bool) -> String -> IO a -> IO ()
failIfFalseWithRetry_ :: String -> IO Bool -> IO ()
deleteFile :: String -> IO ()
copyFile :: String -> String -> Bool -> IO ()
moveFile :: String -> String -> IO ()
moveFileEx :: String -> Maybe String -> MoveFileFlag -> IO ()
setCurrentDirectory :: String -> IO ()
createDirectory :: String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()
createDirectoryEx :: String -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()
removeDirectory :: String -> IO ()
getBinaryType :: String -> IO BinaryType
createFile :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE
closeHandle :: HANDLE -> IO ()
getFileType :: HANDLE -> IO FileType
flushFileBuffers :: HANDLE -> IO ()
setEndOfFile :: HANDLE -> IO ()
setFileAttributes :: String -> FileAttributeOrFlag -> IO ()
getFileAttributes :: String -> IO FileAttributeOrFlag
getFileAttributesExStandard :: String -> IO WIN32_FILE_ATTRIBUTE_DATA
getFileInformationByHandle :: HANDLE -> IO BY_HANDLE_FILE_INFORMATION
data OVERLAPPED
OVERLAPPED :: ULONG_PTR -> ULONG_PTR -> DWORD -> DWORD -> HANDLE -> OVERLAPPED
[ovl_internal] :: OVERLAPPED -> ULONG_PTR
[ovl_internalHigh] :: OVERLAPPED -> ULONG_PTR
[ovl_offset] :: OVERLAPPED -> DWORD
[ovl_offsetHigh] :: OVERLAPPED -> DWORD
[ovl_hEvent] :: OVERLAPPED -> HANDLE
type LPOVERLAPPED = Ptr OVERLAPPED
type MbLPOVERLAPPED = Maybe LPOVERLAPPED
win32_ReadFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD
win32_WriteFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD
setFilePointerEx :: HANDLE -> LARGE_INTEGER -> FilePtrDirection -> IO LARGE_INTEGER
findFirstChangeNotification :: String -> Bool -> FileNotificationFlag -> IO HANDLE
findNextChangeNotification :: HANDLE -> IO ()
findCloseChangeNotification :: HANDLE -> IO ()
data FindData
getFindDataFileName :: FindData -> IO FilePath
findFirstFile :: String -> IO (HANDLE, FindData)
findNextFile :: HANDLE -> FindData -> IO Bool
findClose :: HANDLE -> IO ()
defineDosDevice :: DefineDosDeviceFlags -> String -> Maybe String -> IO ()
areFileApisANSI :: IO Bool
setFileApisToOEM :: IO ()
setFileApisToANSI :: IO ()
setHandleCount :: UINT -> IO UINT
getLogicalDrives :: IO DWORD
getDiskFreeSpace :: Maybe String -> IO (DWORD, DWORD, DWORD, DWORD)
setVolumeLabel :: Maybe String -> Maybe String -> IO ()

-- | Locks a given range in a file handle, To lock an entire file use
--   0xFFFFFFFFFFFFFFFF for size and 0 for offset.
lockFile :: HANDLE -> LockMode -> DWORD64 -> DWORD64 -> IO BOOL

-- | Unlocks a given range in a file handle, To unlock an entire file use
--   0xFFFFFFFFFFFFFFFF for size and 0 for offset.
unlockFile :: HANDLE -> DWORD64 -> DWORD64 -> IO BOOL
instance GHC.Classes.Ord System.Win32.File.GET_FILEEX_INFO_LEVELS
instance GHC.Classes.Eq System.Win32.File.GET_FILEEX_INFO_LEVELS
instance GHC.Show.Show System.Win32.File.SECURITY_ATTRIBUTES
instance GHC.Show.Show System.Win32.File.BY_HANDLE_FILE_INFORMATION
instance GHC.Show.Show System.Win32.File.WIN32_FILE_ATTRIBUTE_DATA
instance GHC.Show.Show System.Win32.File.OVERLAPPED
instance Foreign.Storable.Storable System.Win32.File.OVERLAPPED
instance Foreign.Storable.Storable System.Win32.File.WIN32_FILE_ATTRIBUTE_DATA
instance Foreign.Storable.Storable System.Win32.File.BY_HANDLE_FILE_INFORMATION
instance Foreign.Storable.Storable System.Win32.File.SECURITY_ATTRIBUTES


-- | Handling symbolic link using Win32 API. [Vista of later and desktop
--   app only]
--   
--   Note: When using the createSymbolicLink* functions without the
--   SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag, you should worry
--   about UAC (User Account Control) when use this module's function in
--   your application:
--   
--   <ul>
--   <li>require to use 'Run As Administrator' to run your
--   application.</li>
--   <li>or modify your application's manifect file to add
--   &lt;requestedExecutionLevel level=<tt>requireAdministrator</tt>
--   uiAccess=<tt>false</tt>/&gt;.</li>
--   </ul>
--   
--   Starting from Windows 10 version 1703 (Creators Update), after
--   enabling Developer Mode, users can create symbolic links without
--   requiring the Administrator privilege in the current process. Supply a
--   <a>True</a> flag in addition to the target and link name to enable
--   this behavior.
module System.Win32.SymbolicLink
type SymbolicLinkFlags = DWORD
sYMBOLIC_LINK_FLAG_FILE :: SymbolicLinkFlags
sYMBOLIC_LINK_FLAG_DIRECTORY :: SymbolicLinkFlags
sYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE :: SymbolicLinkFlags

-- | createSymbolicLink* functions don't check that file is exist or not.
--   
--   NOTE: createSymbolicLink* functions are <i>flipped arguments</i> to
--   provide compatibility for Unix, except <a>createSymbolicLink'</a>.
--   
--   If you want to create symbolic link by Windows way, use
--   <a>createSymbolicLink'</a> instead.
createSymbolicLink :: FilePath -> FilePath -> SymbolicLinkFlags -> IO ()
createSymbolicLink' :: FilePath -> FilePath -> SymbolicLinkFlags -> IO ()
createSymbolicLinkFile :: FilePath -> FilePath -> Bool -> IO ()
createSymbolicLinkDirectory :: FilePath -> FilePath -> Bool -> IO ()


-- | A collection of FFI declarations for accessing the Win32 registry.
module System.Win32.Registry
type HKEY = ForeignHANDLE
hKEY_CLASSES_ROOT :: HKEY
hKEY_CURRENT_CONFIG :: HKEY
hKEY_CURRENT_USER :: HKEY
hKEY_LOCAL_MACHINE :: HKEY
hKEY_USERS :: HKEY
type RegCreateOptions = DWORD
rEG_OPTION_NON_VOLATILE :: RegCreateOptions
rEG_OPTION_VOLATILE :: RegCreateOptions
type REGSAM = Word32
kEY_ALL_ACCESS :: REGSAM
kEY_CREATE_LINK :: REGSAM
kEY_CREATE_SUB_KEY :: REGSAM
kEY_ENUMERATE_SUB_KEYS :: REGSAM
kEY_EXECUTE :: REGSAM
kEY_NOTIFY :: REGSAM
kEY_QUERY_VALUE :: REGSAM
kEY_READ :: REGSAM
kEY_SET_VALUE :: REGSAM
kEY_WRITE :: REGSAM
regCloseKey :: HKEY -> IO ()
regConnectRegistry :: Maybe String -> HKEY -> IO HKEY
regCreateKey :: HKEY -> String -> IO HKEY
regCreateKeyEx :: HKEY -> String -> Maybe String -> RegCreateOptions -> REGSAM -> Maybe LPSECURITY_ATTRIBUTES -> IO (HKEY, Bool)
regDeleteKey :: HKEY -> String -> IO ()
regDeleteValue :: HKEY -> String -> IO ()
regEnumKeys :: HKEY -> IO [String]
regEnumKeyVals :: HKEY -> IO [(String, String, RegValueType)]
regEnumKey :: HKEY -> DWORD -> LPTSTR -> DWORD -> IO (String, Int)
regEnumValue :: HKEY -> DWORD -> LPTSTR -> DWORD -> LPBYTE -> DWORD -> IO (RegValueType, String, Int)
regFlushKey :: HKEY -> IO ()
regLoadKey :: HKEY -> String -> String -> IO ()
regUnLoadKey :: HKEY -> String -> IO ()
regNotifyChangeKeyValue :: HKEY -> Bool -> RegNotifyOptions -> HANDLE -> Bool -> IO ()
type RegNotifyOptions = DWORD
rEG_NOTIFY_CHANGE_NAME :: RegNotifyOptions
rEG_NOTIFY_CHANGE_ATTRIBUTES :: RegNotifyOptions
rEG_NOTIFY_CHANGE_LAST_SET :: RegNotifyOptions
rEG_NOTIFY_CHANGE_SECURITY :: RegNotifyOptions
regOpenKey :: HKEY -> String -> IO HKEY
regOpenKeyEx :: HKEY -> String -> REGSAM -> IO HKEY
regQueryInfoKey :: HKEY -> IO RegInfoKey
data RegInfoKey
RegInfoKey :: String -> Int -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Int -> Word32 -> Word32 -> RegInfoKey
[class_string] :: RegInfoKey -> String
[class_id] :: RegInfoKey -> Int
[subkeys] :: RegInfoKey -> Word32
[max_subkey_len] :: RegInfoKey -> Word32
[max_class_len] :: RegInfoKey -> Word32
[values] :: RegInfoKey -> Word32
[max_value_name_len] :: RegInfoKey -> Word32
[max_value_len] :: RegInfoKey -> Word32
[sec_len] :: RegInfoKey -> Int
[lastWrite_lo] :: RegInfoKey -> Word32
[lastWrite_hi] :: RegInfoKey -> Word32
regQueryValue :: HKEY -> Maybe String -> IO String

-- | <i>Deprecated: Use regQueryValue instead.</i>
regQueryValueKey :: HKEY -> Maybe String -> IO String
regQueryDefaultValue :: HKEY -> String -> IO String
regQueryValueEx :: HKEY -> String -> LPBYTE -> Int -> IO RegValueType
regReplaceKey :: HKEY -> Maybe String -> String -> String -> IO ()
type RegRestoreFlags = DWORD
rEG_WHOLE_HIVE_VOLATILE :: RegRestoreFlags
rEG_REFRESH_HIVE :: RegRestoreFlags
rEG_NO_LAZY_FLUSH :: RegRestoreFlags
regRestoreKey :: HKEY -> String -> RegRestoreFlags -> IO ()
regSaveKey :: HKEY -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()
regGetValue :: HKEY -> Maybe String -> Maybe String -> RegTypeRestriction -> Maybe LPDWORD -> Maybe LPVOID -> Maybe LPDWORD -> IO ()
type RegTypeRestriction = DWORD
rRF_RT_ANY :: RegTypeRestriction
rRF_RT_DWORD :: RegTypeRestriction
rRF_RT_QWORD :: RegTypeRestriction
rRF_RT_REG_BINARY :: RegTypeRestriction
rRF_RT_REG_DWORD :: RegTypeRestriction
rRF_RT_REG_EXPAND_SZ :: RegTypeRestriction
rRF_RT_REG_MULTI_SZ :: RegTypeRestriction
rRF_RT_REG_NONE :: RegTypeRestriction
rRF_RT_REG_QWORD :: RegTypeRestriction
rRF_RT_REG_SZ :: RegTypeRestriction
rRF_NOEXPAND :: RegTypeRestriction
rRF_ZEROONFAILURE :: RegTypeRestriction
rRF_SUBKEY_WOW6464KEY :: RegTypeRestriction
rRF_SUBKEY_WOW6432KEY :: RegTypeRestriction
regSetValue :: HKEY -> String -> String -> IO ()
regSetValueEx :: HKEY -> String -> RegValueType -> LPTSTR -> Int -> IO ()
type RegValueType = DWORD
rEG_BINARY :: RegValueType
rEG_DWORD :: RegValueType
rEG_DWORD_LITTLE_ENDIAN :: RegValueType
rEG_DWORD_BIG_ENDIAN :: RegValueType
rEG_EXPAND_SZ :: RegValueType
rEG_LINK :: RegValueType
rEG_MULTI_SZ :: RegValueType
rEG_NONE :: RegValueType
rEG_RESOURCE_LIST :: RegValueType
rEG_SZ :: RegValueType
regSetStringValue :: HKEY -> String -> String -> IO ()


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.Process
iNFINITE :: DWORD
sleep :: DWORD -> IO ()
type ProcessId = DWORD
type ProcessHandle = HANDLE
type ProcessAccessRights = DWORD
pROCESS_ALL_ACCESS :: ProcessAccessRights
pROCESS_CREATE_PROCESS :: ProcessAccessRights
pROCESS_CREATE_THREAD :: ProcessAccessRights
pROCESS_DUP_HANDLE :: ProcessAccessRights
pROCESS_QUERY_INFORMATION :: ProcessAccessRights
pROCESS_SET_QUOTA :: ProcessAccessRights
pROCESS_SET_INFORMATION :: ProcessAccessRights
pROCESS_TERMINATE :: ProcessAccessRights
pROCESS_VM_OPERATION :: ProcessAccessRights
pROCESS_VM_READ :: ProcessAccessRights
pROCESS_VM_WRITE :: ProcessAccessRights
openProcess :: ProcessAccessRights -> BOOL -> ProcessId -> IO ProcessHandle
getProcessId :: ProcessHandle -> IO ProcessId
getCurrentProcessId :: IO ProcessId
getCurrentProcess :: IO ProcessHandle
terminateProcessById :: ProcessId -> IO ()
type Th32SnapHandle = HANDLE
type Th32SnapFlags = DWORD
tH32CS_SNAPALL :: Th32SnapFlags
tH32CS_SNAPHEAPLIST :: Th32SnapFlags
tH32CS_SNAPMODULE :: Th32SnapFlags
tH32CS_SNAPMODULE32 :: Th32SnapFlags
tH32CS_SNAPMODULE64 :: Th32SnapFlags
tH32CS_SNAPPROCESS :: Th32SnapFlags
tH32CS_SNAPTHREAD :: Th32SnapFlags

-- | ProcessId, number of threads, parent ProcessId, process base priority,
--   path of executable file
type ProcessEntry32 = (ProcessId, Int, ProcessId, LONG, String)
type ModuleEntry32 = (ForeignAddress, Int, HMODULE, String, String)

-- | Create a snapshot of specified resources. Call closeHandle to close
--   snapshot.
createToolhelp32Snapshot :: Th32SnapFlags -> Maybe ProcessId -> IO Th32SnapHandle
withTh32Snap :: Th32SnapFlags -> Maybe ProcessId -> (Th32SnapHandle -> IO a) -> IO a

-- | Enumerate processes using Process32First and Process32Next
th32SnapEnumProcesses :: Th32SnapHandle -> IO [ProcessEntry32]

-- | Enumerate moduless using Module32First and Module32Next
th32SnapEnumModules :: Th32SnapHandle -> IO [ModuleEntry32]


-- | Get/Set Foreground Window.
module Graphics.Win32.Window.ForegroundWindow
getForegroundWindow :: IO HWND

-- | Setting Window to Foreground. See:
--   <a>https://github.com/haskell/win32/pull/9</a>,
--   <a>http://stackoverflow.com/questions/14297146/win32-setforegroundwindow-in-haskell</a>.
setForegroundWindow :: HWND -> IO Bool
c_SetForegroundWindow :: HWND -> IO Bool

-- | Allow other process to set Window to Foreground by using
--   <a>setForegroundWindow</a> function.
allowSetForegroundWindow :: ProcessId -> IO ()
c_AllowSetForegroundWindow :: ProcessId -> IO Bool


-- | An interface to the Microsoft Windows user interface. See
--   <a>http://msdn.microsoft.com/library/</a> under /User Interface Design
--   and Development<i> and then </i>Windows User Interface/ for more
--   details of the underlying library.
module Graphics.Win32


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.Path
filepathRelativePathTo :: FilePath -> FilePath -> IO FilePath
pathRelativePathTo :: FilePath -> FileAttributeOrFlag -> FilePath -> FileAttributeOrFlag -> IO FilePath


-- | A function to check if the current terminal uses MinTTY. Much of this
--   code was originally authored by Phil Ruffwind and the git-for-windows
--   project.
module System.Win32.MinTTY

-- | Returns <a>True</a> if the current process's standard error is
--   attached to a MinTTY console (e.g., Cygwin or MSYS). Returns
--   <a>False</a> otherwise.
isMinTTY :: IO Bool

-- | Returns <a>True</a> is the given handle is attached to a MinTTY
--   console (e.g., Cygwin or MSYS). Returns <a>False</a> otherwise.
isMinTTYHandle :: HANDLE -> IO Bool
instance GHC.Show.Show System.Win32.MinTTY.FILE_NAME_INFO
instance GHC.Show.Show System.Win32.MinTTY.UNICODE_STRING
instance GHC.Show.Show System.Win32.MinTTY.OBJECT_NAME_INFORMATION
instance Foreign.Storable.Storable System.Win32.MinTTY.OBJECT_NAME_INFORMATION
instance Foreign.Storable.Storable System.Win32.MinTTY.UNICODE_STRING
instance Foreign.Storable.Storable System.Win32.MinTTY.FILE_NAME_INFO


-- | Handling hard link using Win32 API. [NTFS only]
--   
--   Note: You should worry about file system type when use this module's
--   function in your application:
--   
--   <ul>
--   <li>NTFS only supprts this functionality.</li>
--   <li>ReFS doesn't support hard link currently.</li>
--   </ul>
module System.Win32.HardLink

-- | NOTE: createHardLink is <i>flipped arguments</i> to provide
--   compatibility for Unix.
--   
--   If you want to create hard link by Windows way, use
--   <a>createHardLink'</a> instead.
createHardLink :: FilePath -> FilePath -> IO ()
createHardLink' :: FilePath -> FilePath -> IO ()


-- | A collection of FFI declarations for interfacing with Win32 mapped
--   files.
module System.Win32.FileMapping

-- | Maps file fully and returns ForeignPtr and length of the mapped area.
--   The mapped file is opened read-only and shared reading.
mapFile :: FilePath -> IO (ForeignPtr a, Int)
data MappedObject
MappedObject :: HANDLE -> HANDLE -> FileMapAccess -> MappedObject

-- | Opens an existing file and creates mapping object to it.
withMappedFile :: FilePath -> Bool -> Maybe Bool -> (Integer -> MappedObject -> IO a) -> IO a

-- | Maps area into memory.
withMappedArea :: MappedObject -> Integer -> Int -> (Ptr a -> IO b) -> IO b
type ProtectSectionFlags = DWORD
sEC_COMMIT :: ProtectSectionFlags
sEC_IMAGE :: ProtectSectionFlags
sEC_NOCACHE :: ProtectSectionFlags
sEC_RESERVE :: ProtectSectionFlags
type FileMapAccess = DWORD
fILE_MAP_ALL_ACCESS :: FileMapAccess
fILE_MAP_COPY :: FileMapAccess
fILE_MAP_READ :: FileMapAccess
fILE_MAP_WRITE :: FileMapAccess
fILE_SHARE_WRITE :: ShareMode
createFileMapping :: Maybe HANDLE -> ProtectFlags -> DDWORD -> Maybe String -> IO HANDLE
openFileMapping :: FileMapAccess -> BOOL -> Maybe String -> IO HANDLE
mapViewOfFileEx :: HANDLE -> FileMapAccess -> DDWORD -> SIZE_T -> Ptr a -> IO (Ptr b)
mapViewOfFile :: HANDLE -> FileMapAccess -> DDWORD -> SIZE_T -> IO (Ptr a)
unmapViewOfFile :: Ptr a -> IO ()


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.NLS
type NLS_FUNCTION = DWORD
type LCTYPE = UINT
data LCData

-- | Data in the form of a Unicode string.
LCTextualData :: !String -> LCData

-- | Data in the form of a number. See <tt>lOCAL_RETURN_NUMBER</tt> and
--   <tt>LOCAL_I*</tt> locate information constants.
LCNumericData :: !DWORD -> LCData

-- | Data in the fomr of a <a>LOCALESIGNATURE</a>. See
--   <tt>lOCAL_FONTSIGNATURE</tt> locale information constant.
LCSignatureData :: !LOCALESIGNATURE -> LCData
data LOCALESIGNATURE
LOCALESIGNATURE :: !UnicodeSubsetBitfield -> !DDWORD -> !DDWORD -> LOCALESIGNATURE
[lsUsb] :: LOCALESIGNATURE -> !UnicodeSubsetBitfield
[lsCsbDefault] :: LOCALESIGNATURE -> !DDWORD
[lsCsbSupported] :: LOCALESIGNATURE -> !DDWORD
data UnicodeSubsetBitfield
UnicodeSubsetBitfield :: !DDWORD -> !DDWORD -> UnicodeSubsetBitfield
[usbLow] :: UnicodeSubsetBitfield -> !DDWORD
[usbHigh] :: UnicodeSubsetBitfield -> !DDWORD
type LCMapFlags = DWORD
data NLSVERSIONINFOEX
NLSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> GUID -> NLSVERSIONINFOEX
[dwNLSVersionInfoSize] :: NLSVERSIONINFOEX -> DWORD
[dwNLSVersion] :: NLSVERSIONINFOEX -> DWORD
[dwDefinedVersion] :: NLSVERSIONINFOEX -> DWORD
[dwEffectiveId] :: NLSVERSIONINFOEX -> DWORD
[guidCustomVersion] :: NLSVERSIONINFOEX -> GUID
data GUID
GUID :: !Word32 -> !Word16 -> !Word16 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> GUID
type LocaleTestFlags = DWORD
type EnumLocalesFlag = DWORD
type LOCALE_ENUMPROCEX = LPWSTR -> EnumLocalesFlag -> LPARAM -> IO BOOL
multiByteToWideChar :: CodePage -> DWORD -> LPCSTR -> CInt -> LPWSTR -> CInt -> IO CInt
stringToUnicode :: CodePage -> String -> IO String
lOCALE_SYSTEM_DEFAULT :: LCID
lOCALE_USER_DEFAULT :: LCID
lOCALE_NEUTRAL :: LCID
convertDefaultLocale :: LCID -> IO LCID
cP_ACP :: CodePage
cP_MACCP :: CodePage
cP_OEMCP :: CodePage
getACP :: IO CodePage
setThreadLocale :: LCID -> IO ()
lOCALE_FONTSIGNATURE :: LCTYPE
lOCALE_ICALENDARTYPE :: LCTYPE
lOCALE_ICENTURY :: LCTYPE
lOCALE_ICOUNTRY :: LCTYPE
lOCALE_ICURRDIGITS :: LCTYPE
lOCALE_ICURRENCY :: LCTYPE
lOCALE_IDATE :: LCTYPE
lOCALE_IDAYLZERO :: LCTYPE
lOCALE_IDEFAULTANSICODEPAGE :: LCTYPE
lOCALE_IDEFAULTCODEPAGE :: LCTYPE
lOCALE_IDEFAULTCOUNTRY :: LCTYPE
lOCALE_IDEFAULTEBCDICCODEPAGE :: LCTYPE
lOCALE_IDEFAULTLANGUAGE :: LCTYPE
lOCALE_IDEFAULTMACCODEPAGE :: LCTYPE
lOCALE_IDIGITS :: LCTYPE
lOCALE_IDIGITSUBSTITUTION :: LCTYPE
lOCALE_IFIRSTDAYOFWEEK :: LCTYPE
lOCALE_IFIRSTWEEKOFYEAR :: LCTYPE
lOCALE_IGEOID :: LCTYPE
lOCALE_IINTLCURRDIGITS :: LCTYPE
lOCALE_ILANGUAGE :: LCTYPE
lOCALE_ILDATE :: LCTYPE
lOCALE_ILZERO :: LCTYPE
lOCALE_IMEASURE :: LCTYPE
lOCALE_IMONLZERO :: LCTYPE
lOCALE_INEGCURR :: LCTYPE
lOCALE_INEGNUMBER :: LCTYPE
lOCALE_INEGSEPBYSPACE :: LCTYPE
lOCALE_INEGSIGNPOSN :: LCTYPE
lOCALE_INEGSYMPRECEDES :: LCTYPE
lOCALE_IOPTIONALCALENDAR :: LCTYPE
lOCALE_PAPERSIZE :: LCTYPE
lOCALE_IPOSSEPBYSPACE :: LCTYPE
lOCALE_IPOSSIGNPOSN :: LCTYPE
lOCALE_IPSSYMPRECEDES :: LCTYPE
lOCALE_ITIME :: LCTYPE
lOCALE_ITIMEMARKPOSN :: LCTYPE
lOCALE_ITLZERO :: LCTYPE
lOCALE_RETURN_NUMBER :: LCTYPE
lOCALE_S1159 :: LCTYPE
lOCALE_S2359 :: LCTYPE
lOCALE_SABBREVCTRYNAME :: LCTYPE
lOCALE_SABBREVDAYNAME1 :: LCTYPE
lOCALE_SABBREVDAYNAME2 :: LCTYPE
lOCALE_SABBREVDAYNAME3 :: LCTYPE
lOCALE_SABBREVDAYNAME4 :: LCTYPE
lOCALE_SABBREVDAYNAME5 :: LCTYPE
lOCALE_SABBREVDAYNAME6 :: LCTYPE
lOCALE_SABBREVDAYNAME7 :: LCTYPE
lOCALE_SABBREVLANGNAME :: LCTYPE
lOCALE_SABBREVMONTHNAME1 :: LCTYPE
lOCALE_SABBREVMONTHNAME2 :: LCTYPE
lOCALE_SABBREVMONTHNAME3 :: LCTYPE
lOCALE_SABBREVMONTHNAME4 :: LCTYPE
lOCALE_SABBREVMONTHNAME5 :: LCTYPE
lOCALE_SABBREVMONTHNAME6 :: LCTYPE
lOCALE_SABBREVMONTHNAME7 :: LCTYPE
lOCALE_SABBREVMONTHNAME8 :: LCTYPE
lOCALE_SABBREVMONTHNAME9 :: LCTYPE
lOCALE_SABBREVMONTHNAME10 :: LCTYPE
lOCALE_SABBREVMONTHNAME11 :: LCTYPE
lOCALE_SABBREVMONTHNAME12 :: LCTYPE
lOCALE_SABBREVMONTHNAME13 :: LCTYPE
lOCALE_SCONSOLEFALLBACKNAME :: LCTYPE
lOCALE_SCURRENCY :: LCTYPE

-- | Type representing locale data
lOCALE_SDATE :: LCTYPE
lOCALE_SDAYNAME1 :: LCTYPE
lOCALE_SDAYNAME2 :: LCTYPE
lOCALE_SDAYNAME3 :: LCTYPE
lOCALE_SDAYNAME4 :: LCTYPE
lOCALE_SDAYNAME5 :: LCTYPE
lOCALE_SDAYNAME6 :: LCTYPE
lOCALE_SDAYNAME7 :: LCTYPE
lOCALE_SDECIMAL :: LCTYPE
lOCALE_SDURATION :: LCTYPE
lOCALE_SENGCURRNAME :: LCTYPE
lOCALE_SENGLISHCOUNTRYNAME :: LCTYPE
lOCALE_SENGLISHLANGUAGENAME :: LCTYPE
lOCALE_SGROUPING :: LCTYPE
lOCALE_SINTLSYMBOL :: LCTYPE
lOCALE_SISO3166CTRYNAME :: LCTYPE

-- | Type representing 128-bit Unicode subset bitfields, as the
--   <tt>base</tt> package does include a module exporting a 128-bit
--   unsigned integer type.
lOCALE_SISO3166CTRYNAME2 :: LCTYPE
lOCALE_SISO639LANGNAME :: LCTYPE
lOCALE_SISO639LANGNAME2 :: LCTYPE
lOCALE_SKEYBOARDSTOINSTALL :: LCTYPE
lOCALE_SLIST :: LCTYPE
lOCALE_SLONGDATE :: LCTYPE
lOCALE_SMONDECIMALSEP :: LCTYPE
lOCALE_SMONGROUPING :: LCTYPE
lOCALE_SMONTHNAME1 :: LCTYPE
lOCALE_SMONTHNAME2 :: LCTYPE
lOCALE_SMONTHNAME3 :: LCTYPE
lOCALE_SMONTHNAME4 :: LCTYPE
lOCALE_SMONTHNAME5 :: LCTYPE
lOCALE_SMONTHNAME6 :: LCTYPE
lOCALE_SMONTHNAME7 :: LCTYPE
lOCALE_SMONTHNAME8 :: LCTYPE
lOCALE_SMONTHNAME9 :: LCTYPE
lOCALE_SMONTHNAME10 :: LCTYPE
lOCALE_SMONTHNAME11 :: LCTYPE
lOCALE_SMONTHNAME12 :: LCTYPE
lOCALE_SMONTHNAME13 :: LCTYPE
lOCALE_SMONTHOUSANDSEP :: LCTYPE
lOCALE_SNAME :: LCTYPE
lOCALE_SNAN :: LCTYPE
lOCALE_SNATIVECOUNTRYNAME :: LCTYPE
lOCALE_SNATIVECURRNAME :: LCTYPE
lOCALE_SNATIVEDIGITS :: LCTYPE
lOCALE_SNEGATIVESIGN :: LCTYPE
lOCALE_SNEGINFINITY :: LCTYPE
lOCALE_SPARENT :: LCTYPE
lOCALE_SPOSINFINITY :: LCTYPE
lOCALE_SPOSITIVESIGN :: LCTYPE
lOCALE_SSCRIPTS :: LCTYPE
lOCALE_SSHORTDATE :: LCTYPE
lOCALE_SSHORTESTDAYNAME1 :: LCTYPE
lOCALE_SSHORTESTDAYNAME2 :: LCTYPE
lOCALE_SSHORTESTDAYNAME3 :: LCTYPE
lOCALE_SSHORTESTDAYNAME4 :: LCTYPE
lOCALE_SSHORTESTDAYNAME5 :: LCTYPE
lOCALE_SSHORTESTDAYNAME6 :: LCTYPE
lOCALE_SSHORTESTDAYNAME7 :: LCTYPE
lOCALE_SSORTNAME :: LCTYPE
lOCALE_STHOUSAND :: LCTYPE
lOCALE_STIME :: LCTYPE
lOCALE_STIMEFORMAT :: LCTYPE
lOCALE_SYEARMONTH :: LCTYPE
getLocaleInfoEx :: Maybe String -> LCTYPE -> IO LCData
c_GetLocaleInfoEx :: LPCWSTR -> LCTYPE -> LPWSTR -> CInt -> IO CInt
setLocaleInfo :: LCID -> LCTYPE -> String -> IO ()
c_SetLocaleInfo :: LCID -> LCTYPE -> LPCTSTR -> IO Bool
lCMAP_BYTEREV :: LCMapFlags
lCMAP_FULLWIDTH :: LCMapFlags
lCMAP_HALFWIDTH :: LCMapFlags
lCMAP_HIRAGANA :: LCMapFlags
lCMAP_KATAKANA :: LCMapFlags
lCMAP_LINGUISTIC_CASING :: LCMapFlags
lCMAP_LOWERCASE :: LCMapFlags
lCMAP_SIMPLIFIED_CHINESE :: LCMapFlags
lCMAP_SORTKEY :: LCMapFlags
lCMAP_TRADITIONAL_CHINESE :: LCMapFlags
lCMAP_UPPERCASE :: LCMapFlags
lINGUISTIC_IGNORECASE :: LCMapFlags
lINGUISTIC_IGNOREDIACRITIC :: LCMapFlags
nORM_IGNORECASE :: LCMapFlags
nORM_IGNORENONSPACE :: LCMapFlags
nORM_IGNOREKANATYPE :: LCMapFlags
nORM_IGNORESYMBOLS :: LCMapFlags
nORM_IGNOREWIDTH :: LCMapFlags
nORM_LINGUISTIC_CASING :: LCMapFlags
sORT_STRINGSORT :: LCMapFlags
getNLSVersionEx :: Maybe String -> IO NLSVERSIONINFOEX
c_GetNLSVersionEx :: NLS_FUNCTION -> LPCWSTR -> Ptr NLSVERSIONINFOEX -> IO Bool
lCMapStringEx :: Maybe String -> LCMapFlags -> String -> NLSVERSIONINFOEX -> IO String
c_LCMapStringEx :: LPCWSTR -> LCMapFlags -> LPCWSTR -> CInt -> LPWSTR -> CInt -> Ptr NLSVERSIONINFOEX -> LPVOID -> LPARAM -> IO CInt
lCMapString :: LCID -> LCMapFlags -> String -> Int -> IO String
c_LCMapString :: LCID -> LCMapFlags -> LPCTSTR -> Int -> LPCTSTR -> Int -> IO Int
lCID_INSTALLED :: LocaleTestFlags
lCID_SUPPORTED :: LocaleTestFlags
isValidLocaleName :: Maybe String -> IO Bool
c_IsValidLocaleName :: LPCWSTR -> IO Bool
isValidLocale :: LCID -> LocaleTestFlags -> IO Bool
lOCALE_ALL :: EnumLocalesFlag
lOCALE_ALTERNATE_SORTS :: EnumLocalesFlag
lOCALE_REPLACEMENT :: EnumLocalesFlag
lOCALE_SUPPLEMENTAL :: EnumLocalesFlag
lOCALE_WINDOWS :: EnumLocalesFlag
mkLOCALE_ENUMPROCEX :: LOCALE_ENUMPROCEX -> IO (FunPtr LOCALE_ENUMPROCEX)
enumSystemLocalesEx :: LOCALE_ENUMPROCEX -> EnumLocalesFlag -> LPARAM -> IO ()
c_EnumSystemLocalesEx :: FunPtr LOCALE_ENUMPROCEX -> DWORD -> LPARAM -> LPVOID -> IO Bool
enumSystemLocalesEx' :: EnumLocalesFlag -> Maybe Bool -> IO [String]
isValidCodePage :: CodePage -> IO Bool
getUserDefaultLCID :: LCID
getUserDefaultLangID :: LANGID
lOCALE_NAME_INVARIANT :: Maybe String
lOCALE_NAME_SYSTEM_DEFAULT :: Maybe String
lOCALE_NAME_USER_DEFAULT :: Maybe String
getUserDefaultLocaleName :: IO String

-- | Helper function for use with <a>c_GetUserDefaultLocaleName</a> or
--   <a>c_GetSystemDefaultLocaleName</a>. See
--   <a>getUserDefaultLocaleName</a> and
--   <tt>getSystemUserDefaultLocaleName</tt>.
getDefaultLocaleName :: String -> (LPWSTR -> CInt -> IO CInt) -> IO String
c_GetUserDefaultLocaleName :: LPWSTR -> CInt -> IO CInt
lOCALE_NAME_MAX_LENGTH :: CInt
getThreadLocale :: IO LCID
getSystemDefaultLCID :: LCID
getSystemDefaultLangID :: LANGID
getSystemDefaultLocaleName :: IO String
c_GetSystemDefaultLocaleName :: LPWSTR -> CInt -> IO CInt
getOEMCP :: CodePage
lANG_NEUTRAL :: PrimaryLANGID
lANG_BULGARIAN :: PrimaryLANGID
lANG_CHINESE :: PrimaryLANGID
lANG_CZECH :: PrimaryLANGID
lANG_DANISH :: PrimaryLANGID
lANG_GERMAN :: PrimaryLANGID
lANG_GREEK :: PrimaryLANGID
lANG_ENGLISH :: PrimaryLANGID
lANG_SPANISH :: PrimaryLANGID
lANG_FINNISH :: PrimaryLANGID
lANG_FRENCH :: PrimaryLANGID
lANG_HUNGARIAN :: PrimaryLANGID
lANG_ICELANDIC :: PrimaryLANGID
lANG_ITALIAN :: PrimaryLANGID
lANG_JAPANESE :: PrimaryLANGID
lANG_KOREAN :: PrimaryLANGID
lANG_DUTCH :: PrimaryLANGID
lANG_NORWEGIAN :: PrimaryLANGID
lANG_POLISH :: PrimaryLANGID
lANG_PORTUGUESE :: PrimaryLANGID
lANG_ROMANIAN :: PrimaryLANGID
lANG_RUSSIAN :: PrimaryLANGID
lANG_CROATIAN :: PrimaryLANGID
lANG_SLOVAK :: PrimaryLANGID
lANG_SWEDISH :: PrimaryLANGID
lANG_TURKISH :: PrimaryLANGID
lANG_SLOVENIAN :: PrimaryLANGID
lANG_ARABIC :: PrimaryLANGID
lANG_CATALAN :: PrimaryLANGID
lANG_HEBREW :: PrimaryLANGID
lANG_SERBIAN :: PrimaryLANGID
lANG_ALBANIAN :: PrimaryLANGID
lANG_THAI :: PrimaryLANGID
lANG_URDU :: PrimaryLANGID
lANG_INDONESIAN :: PrimaryLANGID
lANG_BELARUSIAN :: PrimaryLANGID
lANG_ESTONIAN :: PrimaryLANGID
lANG_LATVIAN :: PrimaryLANGID
lANG_LITHUANIAN :: PrimaryLANGID
lANG_FARSI :: PrimaryLANGID
lANG_VIETNAMESE :: PrimaryLANGID
lANG_ARMENIAN :: PrimaryLANGID
lANG_AZERI :: PrimaryLANGID
lANG_BASQUE :: PrimaryLANGID
lANG_MACEDONIAN :: PrimaryLANGID
lANG_AFRIKAANS :: PrimaryLANGID
lANG_GEORGIAN :: PrimaryLANGID
lANG_FAEROESE :: PrimaryLANGID
lANG_HINDI :: PrimaryLANGID
lANG_MALAY :: PrimaryLANGID
lANG_KAZAK :: PrimaryLANGID
lANG_SWAHILI :: PrimaryLANGID
lANG_UZBEK :: PrimaryLANGID
lANG_TATAR :: PrimaryLANGID
lANG_BENGALI :: PrimaryLANGID
lANG_PUNJABI :: PrimaryLANGID
lANG_GUJARATI :: PrimaryLANGID
lANG_ORIYA :: PrimaryLANGID
lANG_TAMIL :: PrimaryLANGID
lANG_TELUGU :: PrimaryLANGID
lANG_KANNADA :: PrimaryLANGID
lANG_MALAYALAM :: PrimaryLANGID
lANG_ASSAMESE :: PrimaryLANGID
lANG_MARATHI :: PrimaryLANGID
lANG_SANSKRIT :: PrimaryLANGID
lANG_KONKANI :: PrimaryLANGID
lANG_MANIPURI :: PrimaryLANGID
lANG_SINDHI :: PrimaryLANGID
lANG_KASHMIRI :: PrimaryLANGID
lANG_NEPALI :: PrimaryLANGID
sORT_DEFAULT :: SortID
sORT_JAPANESE_XJIS :: SortID
sORT_JAPANESE_UNICODE :: SortID
sORT_CHINESE_BIG5 :: SortID
sORT_CHINESE_UNICODE :: SortID
sORT_KOREAN_KSC :: SortID
sORT_KOREAN_UNICODE :: SortID
sUBLANG_NEUTRAL :: SubLANGID
sUBLANG_DEFAULT :: SubLANGID
sUBLANG_SYS_DEFAULT :: SubLANGID
sUBLANG_CHINESE_TRADITIONAL :: SubLANGID
sUBLANG_CHINESE_SIMPLIFIED :: SubLANGID
sUBLANG_CHINESE_HONGKONG :: SubLANGID
sUBLANG_CHINESE_SINGAPORE :: SubLANGID
sUBLANG_DUTCH :: SubLANGID
sUBLANG_DUTCH_BELGIAN :: SubLANGID
sUBLANG_ENGLISH_US :: SubLANGID
sUBLANG_ENGLISH_UK :: SubLANGID
sUBLANG_ENGLISH_AUS :: SubLANGID
sUBLANG_ENGLISH_CAN :: SubLANGID
sUBLANG_ENGLISH_NZ :: SubLANGID
sUBLANG_ENGLISH_EIRE :: SubLANGID
sUBLANG_FRENCH :: SubLANGID
sUBLANG_FRENCH_BELGIAN :: SubLANGID
sUBLANG_FRENCH_CANADIAN :: SubLANGID
sUBLANG_FRENCH_SWISS :: SubLANGID
sUBLANG_GERMAN :: SubLANGID
sUBLANG_GERMAN_SWISS :: SubLANGID
sUBLANG_GERMAN_AUSTRIAN :: SubLANGID
sUBLANG_ITALIAN :: SubLANGID
sUBLANG_ITALIAN_SWISS :: SubLANGID
sUBLANG_NORWEGIAN_BOKMAL :: SubLANGID
sUBLANG_NORWEGIAN_NYNORSK :: SubLANGID
sUBLANG_PORTUGUESE :: SubLANGID
sUBLANG_PORTUGUESE_BRAZILIAN :: SubLANGID
sUBLANG_SPANISH :: SubLANGID
sUBLANG_SPANISH_MEXICAN :: SubLANGID
sUBLANG_SPANISH_MODERN :: SubLANGID
sUBLANG_ARABIC_SAUDI_ARABIA :: SubLANGID
sUBLANG_ARABIC_IRAQ :: SubLANGID
sUBLANG_ARABIC_EGYPT :: SubLANGID
sUBLANG_ARABIC_LIBYA :: SubLANGID
sUBLANG_ARABIC_ALGERIA :: SubLANGID
sUBLANG_ARABIC_MOROCCO :: SubLANGID
sUBLANG_ARABIC_TUNISIA :: SubLANGID
sUBLANG_ARABIC_OMAN :: SubLANGID
sUBLANG_ARABIC_YEMEN :: SubLANGID
sUBLANG_ARABIC_SYRIA :: SubLANGID
sUBLANG_ARABIC_JORDAN :: SubLANGID
sUBLANG_ARABIC_LEBANON :: SubLANGID
sUBLANG_ARABIC_KUWAIT :: SubLANGID
sUBLANG_ARABIC_UAE :: SubLANGID
sUBLANG_ARABIC_BAHRAIN :: SubLANGID
sUBLANG_ARABIC_QATAR :: SubLANGID
sUBLANG_AZERI_CYRILLIC :: SubLANGID
sUBLANG_AZERI_LATIN :: SubLANGID
sUBLANG_CHINESE_MACAU :: SubLANGID

-- | The <a>IO</a> input functions (e.g. <a>getLine</a>) don't
--   automatically convert to Unicode, so this function is provided to make
--   the conversion from a multibyte string in the given code page to a
--   proper Unicode string. To get the code page for the console, use
--   <tt>getConsoleCP</tt>.
sUBLANG_ENGLISH_SOUTH_AFRICA :: SubLANGID
sUBLANG_ENGLISH_JAMAICA :: SubLANGID
sUBLANG_ENGLISH_CARIBBEAN :: SubLANGID
sUBLANG_ENGLISH_BELIZE :: SubLANGID
sUBLANG_ENGLISH_TRINIDAD :: SubLANGID
sUBLANG_ENGLISH_PHILIPPINES :: SubLANGID
sUBLANG_ENGLISH_ZIMBABWE :: SubLANGID
sUBLANG_FRENCH_LUXEMBOURG :: SubLANGID
sUBLANG_FRENCH_MONACO :: SubLANGID
sUBLANG_GERMAN_LUXEMBOURG :: SubLANGID
sUBLANG_GERMAN_LIECHTENSTEIN :: SubLANGID
sUBLANG_KASHMIRI_INDIA :: SubLANGID
sUBLANG_KOREAN :: SubLANGID
sUBLANG_LITHUANIAN :: SubLANGID
sUBLANG_MALAY_MALAYSIA :: SubLANGID
sUBLANG_MALAY_BRUNEI_DARUSSALAM :: SubLANGID
sUBLANG_NEPALI_INDIA :: SubLANGID
sUBLANG_SERBIAN_LATIN :: SubLANGID
sUBLANG_SERBIAN_CYRILLIC :: SubLANGID
sUBLANG_SPANISH_GUATEMALA :: SubLANGID
sUBLANG_SPANISH_COSTA_RICA :: SubLANGID
sUBLANG_SPANISH_PANAMA :: SubLANGID
sUBLANG_SPANISH_DOMINICAN_REPUBLIC :: SubLANGID
sUBLANG_SPANISH_VENEZUELA :: SubLANGID
sUBLANG_SPANISH_COLOMBIA :: SubLANGID
sUBLANG_SPANISH_PERU :: SubLANGID
sUBLANG_SPANISH_ARGENTINA :: SubLANGID
sUBLANG_SPANISH_ECUADOR :: SubLANGID
sUBLANG_SPANISH_CHILE :: SubLANGID
sUBLANG_SPANISH_URUGUAY :: SubLANGID
sUBLANG_SPANISH_PARAGUAY :: SubLANGID
sUBLANG_SPANISH_BOLIVIA :: SubLANGID
sUBLANG_SPANISH_EL_SALVADOR :: SubLANGID
sUBLANG_SPANISH_HONDURAS :: SubLANGID
sUBLANG_SPANISH_NICARAGUA :: SubLANGID
sUBLANG_SPANISH_PUERTO_RICO :: SubLANGID
sUBLANG_SWEDISH :: SubLANGID
sUBLANG_SWEDISH_FINLAND :: SubLANGID
sUBLANG_URDU_PAKISTAN :: SubLANGID
sUBLANG_URDU_INDIA :: SubLANGID
sUBLANG_UZBEK_LATIN :: SubLANGID
sUBLANG_UZBEK_CYRILLIC :: SubLANGID
type CodePage = DWORD
type LCID = DWORD
type LANGID = WORD
type SortID = WORD
type SubLANGID = WORD
type PrimaryLANGID = WORD
mAKELCID :: LANGID -> SortID -> LCID
lANGIDFROMLCID :: LCID -> LANGID
sORTIDFROMLCID :: LCID -> SortID
mAKELANGID :: PrimaryLANGID -> SubLANGID -> LANGID
pRIMARYLANGID :: LANGID -> PrimaryLANGID
sUBLANGID :: LANGID -> SubLANGID
instance GHC.Show.Show System.Win32.NLS.UnicodeSubsetBitfield
instance GHC.Classes.Eq System.Win32.NLS.UnicodeSubsetBitfield
instance GHC.Show.Show System.Win32.NLS.LOCALESIGNATURE
instance GHC.Classes.Eq System.Win32.NLS.LOCALESIGNATURE
instance GHC.Show.Show System.Win32.NLS.LCData
instance GHC.Classes.Eq System.Win32.NLS.LCData
instance GHC.Classes.Eq System.Win32.NLS.GUID
instance GHC.Show.Show System.Win32.NLS.NLSVERSIONINFOEX
instance GHC.Classes.Eq System.Win32.NLS.NLSVERSIONINFOEX
instance Foreign.Storable.Storable System.Win32.NLS.NLSVERSIONINFOEX
instance GHC.Show.Show System.Win32.NLS.GUID
instance Foreign.Storable.Storable System.Win32.NLS.GUID
instance Foreign.Storable.Storable System.Win32.NLS.LOCALESIGNATURE
instance Foreign.Storable.Storable System.Win32.NLS.UnicodeSubsetBitfield


-- | Enocode/Decode mutibyte charactor using Win32 API.
module System.Win32.Encoding
getCurrentCodePage :: IO DWORD

-- | The <a>System.IO</a> output functions (e.g. <a>putStr</a>) don't
--   automatically convert to multibyte string on Windows, so this function
--   is provided to make the conversion from a Unicode string in the given
--   code page to a proper multibyte string. To get the code page for the
--   console, use <a>getCurrentCodePage</a>.
encodeMultiByte :: CodePage -> String -> String
encodeMultiByteIO :: CodePage -> String -> IO String

-- | The <a>System.IO</a> input functions (e.g. <a>getLine</a>) don't
--   automatically convert to Unicode, so this function is provided to make
--   the conversion from a multibyte string in the given code page to a
--   proper Unicode string. To get the code page for the console, use
--   <a>getCurrentCodePage</a>.
decodeMultiByte :: CodePage -> String -> String

-- | Because of <a>stringToUnicode</a> is unclear name, we use
--   <a>decodeMultiByteIO</a> for alias of <a>stringToUnicode</a>.
decodeMultiByteIO :: CodePage -> String -> IO String
wideCharToMultiByte :: CodePage -> DWORD -> LPCWSTR -> CInt -> LPSTR -> CInt -> LPCSTR -> LPBOOL -> IO CInt
multiByteToWideChar :: CodePage -> DWORD -> LPCSTR -> CInt -> LPWSTR -> CInt -> IO CInt


-- | Multimedia API. TODO: provide more functions ...
module Media.Win32
type MCIERROR = DWORD
mciSendString :: String -> IO ()
c_mciSendString :: LPCTSTR -> LPTSTR -> UINT -> HANDLE -> IO MCIERROR
mciGetErrorString :: MCIERROR -> IO ()
c_mciGetErrorString :: MCIERROR -> LPTSTR -> UINT -> IO BOOL


-- | Version information about your computer.
module System.Win32.Info.Version
data OSVERSIONINFOEX
OSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> String -> WORD -> WORD -> WORD -> ProductType -> OSVERSIONINFOEX
[dwMajorVersion] :: OSVERSIONINFOEX -> DWORD
[dwMinorVersion] :: OSVERSIONINFOEX -> DWORD
[dwBuildNumber] :: OSVERSIONINFOEX -> DWORD
[dwPlatformId] :: OSVERSIONINFOEX -> DWORD
[szCSDVersion] :: OSVERSIONINFOEX -> String
[wServicePackMajor] :: OSVERSIONINFOEX -> WORD
[wServicePackMinor] :: OSVERSIONINFOEX -> WORD
[wSuiteMask] :: OSVERSIONINFOEX -> WORD
[wProductType] :: OSVERSIONINFOEX -> ProductType
type POSVERSIONINFOEX = Ptr OSVERSIONINFOEX
type LPOSVERSIONINFOEX = Ptr OSVERSIONINFOEX
data ProductType
VerUnknow :: BYTE -> ProductType
VerNTWorkStation :: ProductType
VerNTDomainControler :: ProductType
VerNTServer :: ProductType
getVersionEx :: IO OSVERSIONINFOEX
c_GetVersionEx :: LPOSVERSIONINFOEX -> IO BOOL
isVistaOrLater :: IO Bool
is7OrLater :: IO Bool
instance GHC.Classes.Eq System.Win32.Info.Version.ProductType
instance GHC.Show.Show System.Win32.Info.Version.ProductType
instance GHC.Show.Show System.Win32.Info.Version.OSVERSIONINFOEX
instance Foreign.Storable.Storable System.Win32.Info.Version.OSVERSIONINFOEX
instance Foreign.Storable.Storable System.Win32.Info.Version.ProductType


-- | An FFI binding to the hot key part of the Win32 API.
module Graphics.Win32.Window.HotKey
type FsModifiers = [FsModifier]
type FsModifier = UINT
mOD_ALT :: FsModifier
mOD_CONTROL :: FsModifier
mOD_SHIFT :: FsModifier
mOD_WIN :: FsModifier

-- | This parameter requires to use Windows 7 or later.
mOD_NOREPEAT :: FsModifier
wM_HOTKEY :: WindowMessage
joinModifiers :: FsModifiers -> FsModifier
registerHotKey :: MbHWND -> Int -> FsModifier -> VKey -> IO ()
c_RegisterHotKey :: HWND -> Int -> UINT -> VKey -> IO BOOL
unregisterHotKey :: MbHWND -> Int -> IO ()
c_UnregisterHotKey :: HWND -> Int -> IO BOOL


-- | Information about your computer.
module System.Win32.Info.Computer
expandEnvironmentStrings :: String -> IO String
c_ExpandEnvironmentStrings :: LPCTSTR -> LPTSTR -> DWORD -> IO DWORD
getComputerName :: IO String
setComputerName :: String -> IO ()
c_GetComputerName :: LPTSTR -> LPDWORD -> IO Bool
c_SetComputerName :: LPTSTR -> IO Bool
getSystemMetrics :: SMSetting -> IO Int
sM_CMONITORS :: SMSetting
sM_IMMENABLED :: SMSetting
sM_MOUSEWHEELPRESENT :: SMSetting
sM_REMOTESESSION :: SMSetting
sM_SAMEDISPLAYFORMAT :: SMSetting
sM_XVIRTUALSCREEN :: SMSetting
sM_YVIRTUALSCREEN :: SMSetting
sM_SERVERR2 :: SMSetting
sM_MEDIACENTER :: SMSetting
sM_STARTER :: SMSetting
sM_TABLETPC :: SMSetting

-- | Get user name. See: <a>https://github.com/haskell/win32/issues/8</a>,
--   <a>http://lpaste.net/41521</a>
getUserName :: IO String
c_GetUserName :: LPTSTR -> LPDWORD -> IO Bool
data OSVERSIONINFOEX
OSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> String -> WORD -> WORD -> WORD -> ProductType -> OSVERSIONINFOEX
[dwMajorVersion] :: OSVERSIONINFOEX -> DWORD
[dwMinorVersion] :: OSVERSIONINFOEX -> DWORD
[dwBuildNumber] :: OSVERSIONINFOEX -> DWORD
[dwPlatformId] :: OSVERSIONINFOEX -> DWORD
[szCSDVersion] :: OSVERSIONINFOEX -> String
[wServicePackMajor] :: OSVERSIONINFOEX -> WORD
[wServicePackMinor] :: OSVERSIONINFOEX -> WORD
[wSuiteMask] :: OSVERSIONINFOEX -> WORD
[wProductType] :: OSVERSIONINFOEX -> ProductType
type POSVERSIONINFOEX = Ptr OSVERSIONINFOEX
type LPOSVERSIONINFOEX = Ptr OSVERSIONINFOEX
data ProductType
VerUnknow :: BYTE -> ProductType
VerNTWorkStation :: ProductType
VerNTDomainControler :: ProductType
VerNTServer :: ProductType
getVersionEx :: IO OSVERSIONINFOEX
c_GetVersionEx :: LPOSVERSIONINFOEX -> IO BOOL
type ProcessorFeature = DWORD
isProcessorFeaturePresent :: ProcessorFeature -> IO BOOL
pF_3DNOW_INSTRUCTIONS_AVAILABLE :: ProcessorFeature
pF_COMPARE_EXCHANGE_DOUBLE :: ProcessorFeature
pF_FLOATING_POINT_EMULATED :: ProcessorFeature
pF_FLOATING_POINT_PRECISION_ERRATA :: ProcessorFeature
pF_MMX_INSTRUCTIONS_AVAILABLE :: ProcessorFeature
pF_PAE_ENABLED :: ProcessorFeature
pF_RDTSC_INSTRUCTION_AVAILABLE :: ProcessorFeature
pF_XMMI_INSTRUCTIONS_AVAILABLE :: ProcessorFeature
pF_XMMI64_INSTRUCTIONS_AVAILABLE :: ProcessorFeature


-- | A collection of FFI declarations for interfacing with Win32 event
--   system between processes.
module System.Win32.Event
type DuplicateOption = DWORD
dUPLICATE_CLOSE_SOURCE :: DuplicateOption
dUPLICATE_SAME_ACCESS :: DuplicateOption
type AccessMode = UINT
eVENT_ALL_ACCESS :: AccessMode
eVENT_MODIFY_STATE :: AccessMode
type WaitResult = DWORD
wAIT_ABANDONED :: WaitResult
wAIT_IO_COMPLETION :: WaitResult
wAIT_OBJECT_0 :: WaitResult
wAIT_TIMEOUT :: WaitResult
wAIT_FAILED :: WaitResult
openEvent :: AccessMode -> Bool -> String -> IO HANDLE
createEvent :: Maybe SECURITY_ATTRIBUTES -> Bool -> Bool -> String -> IO HANDLE
duplicateHandle :: HANDLE -> HANDLE -> HANDLE -> AccessMode -> Bool -> DuplicateOption -> IO HANDLE
setEvent :: HANDLE -> IO ()
resetEvent :: HANDLE -> IO ()
pulseEvent :: HANDLE -> IO ()
signalObjectAndWait :: HANDLE -> HANDLE -> MilliSeconds -> Bool -> IO WaitResult
waitForSingleObject :: HANDLE -> MilliSeconds -> IO WaitResult
waitForSingleObjectEx :: HANDLE -> MilliSeconds -> Bool -> IO WaitResult
waitForMultipleObjects :: [HANDLE] -> Bool -> MilliSeconds -> IO WaitResult
waitForMultipleObjectsEx :: [HANDLE] -> Bool -> MilliSeconds -> Bool -> IO WaitResult


-- | Get/Set the title for the current console window.
module System.Win32.Console.Title
getConsoleTitle :: IO String
setConsoleTitle :: String -> IO ()


-- | Get the handle of the current console window.
module System.Win32.Console.HWND

-- | Get the handle of the current console window by using window's title.
--   See: <a>http://support.microsoft.com/kb/124103</a>
getConsoleHWND :: IO HWND


-- | Mouse input events
module System.Win32.Automation.Input.Mouse
type PMOUSEINPUT = Ptr MOUSEINPUT
data MOUSEINPUT
MOUSEINPUT :: LONG -> LONG -> DWORD -> DWORD -> DWORD -> ULONG_PTR -> MOUSEINPUT
[dx] :: MOUSEINPUT -> LONG
[dy] :: MOUSEINPUT -> LONG
[mouseData] :: MOUSEINPUT -> DWORD
[dwFlags] :: MOUSEINPUT -> DWORD
[time] :: MOUSEINPUT -> DWORD
[dwExtraInfo] :: MOUSEINPUT -> ULONG_PTR
xBUTTON1 :: DWORD
xBUTTON2 :: DWORD
mOUSEEVENTF_ABSOLUTE :: DWORD
mOUSEEVENTF_MOVE :: DWORD
mOUSEEVENTF_LEFTDOWN :: DWORD
mOUSEEVENTF_LEFTUP :: DWORD
mOUSEEVENTF_RIGHTDOWN :: DWORD
mOUSEEVENTF_RIGHTUP :: DWORD
mOUSEEVENTF_MIDDLEDOWN :: DWORD
mOUSEEVENTF_MIDDLEUP :: DWORD
mOUSEEVENTF_WHEEL :: DWORD
mOUSEEVENTF_XDOWN :: DWORD
mOUSEEVENTF_XUP :: DWORD
instance GHC.Show.Show System.Win32.Automation.Input.Mouse.MOUSEINPUT
instance Foreign.Storable.Storable System.Win32.Automation.Input.Mouse.MOUSEINPUT


-- | Keyboard input events
module System.Win32.Automation.Input.Key
type PKEYBDINPUT = Ptr KEYBDINPUT
data KEYBDINPUT
KEYBDINPUT :: WORD -> WORD -> DWORD -> DWORD -> ULONG_PTR -> KEYBDINPUT
[wVk] :: KEYBDINPUT -> WORD
[wScan] :: KEYBDINPUT -> WORD
[dwFlags] :: KEYBDINPUT -> DWORD
[time] :: KEYBDINPUT -> DWORD
[dwExtraInfo] :: KEYBDINPUT -> ULONG_PTR
kEYEVENTF_EXTENDEDKEY :: DWORD
kEYEVENTF_KEYUP :: DWORD
kEYEVENTF_SCANCODE :: DWORD
kEYEVENTF_UNICODE :: DWORD
instance GHC.Show.Show System.Win32.Automation.Input.Key.KEYBDINPUT
instance Foreign.Storable.Storable System.Win32.Automation.Input.Key.KEYBDINPUT


-- | Provide sendInput function and INPUT types.
module System.Win32.Automation.Input
sendInput :: [INPUT] -> IO UINT

-- | Raw pointer of array version of <a>sendInput</a>. Use this function to
--   support non-list sequence.
sendInputPtr :: Int -> Ptr INPUT -> IO UINT
makeKeyboardInput :: VKey -> Maybe DWORD -> IO INPUT
type PINPUT = Ptr INPUT
type LPINPUT = Ptr INPUT
data INPUT
Mouse :: MOUSEINPUT -> INPUT
Keyboard :: KEYBDINPUT -> INPUT
OtherHardware :: HARDWAREINPUT -> INPUT
type PHARDWAREINPUT = Ptr HARDWAREINPUT
data HARDWAREINPUT
HARDWAREINPUT :: DWORD -> WORD -> WORD -> HARDWAREINPUT
[uMsg] :: HARDWAREINPUT -> DWORD
[wParamL] :: HARDWAREINPUT -> WORD
[wParamH] :: HARDWAREINPUT -> WORD
getMessageExtraInfo :: IO LPARAM
setMessageExtraInfo :: LPARAM -> IO LPARAM
data MOUSEINPUT
type PMOUSEINPUT = Ptr MOUSEINPUT
xBUTTON1 :: DWORD
xBUTTON2 :: DWORD
mOUSEEVENTF_ABSOLUTE :: DWORD
mOUSEEVENTF_MOVE :: DWORD
mOUSEEVENTF_LEFTDOWN :: DWORD
mOUSEEVENTF_LEFTUP :: DWORD
mOUSEEVENTF_RIGHTDOWN :: DWORD
mOUSEEVENTF_RIGHTUP :: DWORD
mOUSEEVENTF_MIDDLEDOWN :: DWORD
mOUSEEVENTF_MIDDLEUP :: DWORD
mOUSEEVENTF_WHEEL :: DWORD
mOUSEEVENTF_XDOWN :: DWORD
mOUSEEVENTF_XUP :: DWORD
instance GHC.Show.Show System.Win32.Automation.Input.HARDWAREINPUT
instance GHC.Show.Show System.Win32.Automation.Input.INPUT
instance Foreign.Storable.Storable System.Win32.Automation.Input.INPUT
instance Foreign.Storable.Storable System.Win32.Automation.Input.HARDWAREINPUT


-- | Provide sendInput function and INPUT types.
module System.Win32.Automation


-- | An FFI binding to the system part of the Win32 API.
module System.Win32
type CodePage = DWORD
type NLS_FUNCTION = DWORD
type LCTYPE = UINT
data LCData

-- | Data in the form of a Unicode string.
LCTextualData :: !String -> LCData

-- | Data in the form of a number. See <tt>lOCAL_RETURN_NUMBER</tt> and
--   <tt>LOCAL_I*</tt> locate information constants.
LCNumericData :: !DWORD -> LCData

-- | Data in the fomr of a <a>LOCALESIGNATURE</a>. See
--   <tt>lOCAL_FONTSIGNATURE</tt> locale information constant.
LCSignatureData :: !LOCALESIGNATURE -> LCData
data LOCALESIGNATURE
LOCALESIGNATURE :: !UnicodeSubsetBitfield -> !DDWORD -> !DDWORD -> LOCALESIGNATURE
[lsUsb] :: LOCALESIGNATURE -> !UnicodeSubsetBitfield
[lsCsbDefault] :: LOCALESIGNATURE -> !DDWORD
[lsCsbSupported] :: LOCALESIGNATURE -> !DDWORD
data UnicodeSubsetBitfield
UnicodeSubsetBitfield :: !DDWORD -> !DDWORD -> UnicodeSubsetBitfield
[usbLow] :: UnicodeSubsetBitfield -> !DDWORD
[usbHigh] :: UnicodeSubsetBitfield -> !DDWORD
type LCMapFlags = DWORD
data NLSVERSIONINFOEX
NLSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> GUID -> NLSVERSIONINFOEX
[dwNLSVersionInfoSize] :: NLSVERSIONINFOEX -> DWORD
[dwNLSVersion] :: NLSVERSIONINFOEX -> DWORD
[dwDefinedVersion] :: NLSVERSIONINFOEX -> DWORD
[dwEffectiveId] :: NLSVERSIONINFOEX -> DWORD
[guidCustomVersion] :: NLSVERSIONINFOEX -> GUID
data GUID
GUID :: !Word32 -> !Word16 -> !Word16 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> GUID
type LocaleTestFlags = DWORD
type EnumLocalesFlag = DWORD
type LOCALE_ENUMPROCEX = LPWSTR -> EnumLocalesFlag -> LPARAM -> IO BOOL
multiByteToWideChar :: CodePage -> DWORD -> LPCSTR -> CInt -> LPWSTR -> CInt -> IO CInt
stringToUnicode :: CodePage -> String -> IO String
lOCALE_SYSTEM_DEFAULT :: LCID
lOCALE_USER_DEFAULT :: LCID
lOCALE_NEUTRAL :: LCID
convertDefaultLocale :: LCID -> IO LCID
cP_ACP :: CodePage
cP_MACCP :: CodePage
cP_OEMCP :: CodePage
getACP :: IO CodePage
setThreadLocale :: LCID -> IO ()
lOCALE_FONTSIGNATURE :: LCTYPE
lOCALE_ICALENDARTYPE :: LCTYPE
lOCALE_ICENTURY :: LCTYPE
lOCALE_ICOUNTRY :: LCTYPE
lOCALE_ICURRDIGITS :: LCTYPE
lOCALE_ICURRENCY :: LCTYPE
lOCALE_IDATE :: LCTYPE
lOCALE_IDAYLZERO :: LCTYPE
lOCALE_IDEFAULTANSICODEPAGE :: LCTYPE
lOCALE_IDEFAULTCODEPAGE :: LCTYPE
lOCALE_IDEFAULTCOUNTRY :: LCTYPE
lOCALE_IDEFAULTEBCDICCODEPAGE :: LCTYPE
lOCALE_IDEFAULTLANGUAGE :: LCTYPE
lOCALE_IDEFAULTMACCODEPAGE :: LCTYPE
lOCALE_IDIGITS :: LCTYPE
lOCALE_IDIGITSUBSTITUTION :: LCTYPE
lOCALE_IFIRSTDAYOFWEEK :: LCTYPE
lOCALE_IFIRSTWEEKOFYEAR :: LCTYPE
lOCALE_IGEOID :: LCTYPE
lOCALE_IINTLCURRDIGITS :: LCTYPE
lOCALE_ILANGUAGE :: LCTYPE
lOCALE_ILDATE :: LCTYPE
lOCALE_ILZERO :: LCTYPE
lOCALE_IMEASURE :: LCTYPE
lOCALE_IMONLZERO :: LCTYPE
lOCALE_INEGCURR :: LCTYPE
lOCALE_INEGNUMBER :: LCTYPE
lOCALE_INEGSEPBYSPACE :: LCTYPE
lOCALE_INEGSIGNPOSN :: LCTYPE
lOCALE_INEGSYMPRECEDES :: LCTYPE
lOCALE_IOPTIONALCALENDAR :: LCTYPE
lOCALE_PAPERSIZE :: LCTYPE
lOCALE_IPOSSEPBYSPACE :: LCTYPE
lOCALE_IPOSSIGNPOSN :: LCTYPE
lOCALE_IPSSYMPRECEDES :: LCTYPE
lOCALE_ITIME :: LCTYPE
lOCALE_ITIMEMARKPOSN :: LCTYPE
lOCALE_ITLZERO :: LCTYPE
lOCALE_RETURN_NUMBER :: LCTYPE
lOCALE_S1159 :: LCTYPE
lOCALE_S2359 :: LCTYPE
lOCALE_SABBREVCTRYNAME :: LCTYPE
lOCALE_SABBREVDAYNAME1 :: LCTYPE
lOCALE_SABBREVDAYNAME2 :: LCTYPE
lOCALE_SABBREVDAYNAME3 :: LCTYPE
lOCALE_SABBREVDAYNAME4 :: LCTYPE
lOCALE_SABBREVDAYNAME5 :: LCTYPE
lOCALE_SABBREVDAYNAME6 :: LCTYPE
lOCALE_SABBREVDAYNAME7 :: LCTYPE
lOCALE_SABBREVLANGNAME :: LCTYPE
lOCALE_SABBREVMONTHNAME1 :: LCTYPE
lOCALE_SABBREVMONTHNAME2 :: LCTYPE
lOCALE_SABBREVMONTHNAME3 :: LCTYPE
lOCALE_SABBREVMONTHNAME4 :: LCTYPE
lOCALE_SABBREVMONTHNAME5 :: LCTYPE
lOCALE_SABBREVMONTHNAME6 :: LCTYPE
lOCALE_SABBREVMONTHNAME7 :: LCTYPE
lOCALE_SABBREVMONTHNAME8 :: LCTYPE
lOCALE_SABBREVMONTHNAME9 :: LCTYPE
lOCALE_SABBREVMONTHNAME10 :: LCTYPE
lOCALE_SABBREVMONTHNAME11 :: LCTYPE
lOCALE_SABBREVMONTHNAME12 :: LCTYPE
lOCALE_SABBREVMONTHNAME13 :: LCTYPE
lOCALE_SCONSOLEFALLBACKNAME :: LCTYPE
lOCALE_SCURRENCY :: LCTYPE

-- | Type representing locale data
lOCALE_SDATE :: LCTYPE
lOCALE_SDAYNAME1 :: LCTYPE
lOCALE_SDAYNAME2 :: LCTYPE
lOCALE_SDAYNAME3 :: LCTYPE
lOCALE_SDAYNAME4 :: LCTYPE
lOCALE_SDAYNAME5 :: LCTYPE
lOCALE_SDAYNAME6 :: LCTYPE
lOCALE_SDAYNAME7 :: LCTYPE
lOCALE_SDECIMAL :: LCTYPE
lOCALE_SDURATION :: LCTYPE
lOCALE_SENGCURRNAME :: LCTYPE
lOCALE_SENGLISHCOUNTRYNAME :: LCTYPE
lOCALE_SENGLISHLANGUAGENAME :: LCTYPE
lOCALE_SGROUPING :: LCTYPE
lOCALE_SINTLSYMBOL :: LCTYPE
lOCALE_SISO3166CTRYNAME :: LCTYPE

-- | Type representing 128-bit Unicode subset bitfields, as the
--   <tt>base</tt> package does include a module exporting a 128-bit
--   unsigned integer type.
lOCALE_SISO3166CTRYNAME2 :: LCTYPE
lOCALE_SISO639LANGNAME :: LCTYPE
lOCALE_SISO639LANGNAME2 :: LCTYPE
lOCALE_SKEYBOARDSTOINSTALL :: LCTYPE
lOCALE_SLIST :: LCTYPE
lOCALE_SLONGDATE :: LCTYPE
lOCALE_SMONDECIMALSEP :: LCTYPE
lOCALE_SMONGROUPING :: LCTYPE
lOCALE_SMONTHNAME1 :: LCTYPE
lOCALE_SMONTHNAME2 :: LCTYPE
lOCALE_SMONTHNAME3 :: LCTYPE
lOCALE_SMONTHNAME4 :: LCTYPE
lOCALE_SMONTHNAME5 :: LCTYPE
lOCALE_SMONTHNAME6 :: LCTYPE
lOCALE_SMONTHNAME7 :: LCTYPE
lOCALE_SMONTHNAME8 :: LCTYPE
lOCALE_SMONTHNAME9 :: LCTYPE
lOCALE_SMONTHNAME10 :: LCTYPE
lOCALE_SMONTHNAME11 :: LCTYPE
lOCALE_SMONTHNAME12 :: LCTYPE
lOCALE_SMONTHNAME13 :: LCTYPE
lOCALE_SMONTHOUSANDSEP :: LCTYPE
lOCALE_SNAME :: LCTYPE
lOCALE_SNAN :: LCTYPE
lOCALE_SNATIVECOUNTRYNAME :: LCTYPE
lOCALE_SNATIVECURRNAME :: LCTYPE
lOCALE_SNATIVEDIGITS :: LCTYPE
lOCALE_SNEGATIVESIGN :: LCTYPE
lOCALE_SNEGINFINITY :: LCTYPE
lOCALE_SPARENT :: LCTYPE
lOCALE_SPOSINFINITY :: LCTYPE
lOCALE_SPOSITIVESIGN :: LCTYPE
lOCALE_SSCRIPTS :: LCTYPE
lOCALE_SSHORTDATE :: LCTYPE
lOCALE_SSHORTESTDAYNAME1 :: LCTYPE
lOCALE_SSHORTESTDAYNAME2 :: LCTYPE
lOCALE_SSHORTESTDAYNAME3 :: LCTYPE
lOCALE_SSHORTESTDAYNAME4 :: LCTYPE
lOCALE_SSHORTESTDAYNAME5 :: LCTYPE
lOCALE_SSHORTESTDAYNAME6 :: LCTYPE
lOCALE_SSHORTESTDAYNAME7 :: LCTYPE
lOCALE_SSORTNAME :: LCTYPE
lOCALE_STHOUSAND :: LCTYPE
lOCALE_STIME :: LCTYPE
lOCALE_STIMEFORMAT :: LCTYPE
lOCALE_SYEARMONTH :: LCTYPE
getLocaleInfoEx :: Maybe String -> LCTYPE -> IO LCData
c_GetLocaleInfoEx :: LPCWSTR -> LCTYPE -> LPWSTR -> CInt -> IO CInt
setLocaleInfo :: LCID -> LCTYPE -> String -> IO ()
c_SetLocaleInfo :: LCID -> LCTYPE -> LPCTSTR -> IO Bool
lCMAP_BYTEREV :: LCMapFlags
lCMAP_FULLWIDTH :: LCMapFlags
lCMAP_HALFWIDTH :: LCMapFlags
lCMAP_HIRAGANA :: LCMapFlags
lCMAP_KATAKANA :: LCMapFlags
lCMAP_LINGUISTIC_CASING :: LCMapFlags
lCMAP_LOWERCASE :: LCMapFlags
lCMAP_SIMPLIFIED_CHINESE :: LCMapFlags
lCMAP_SORTKEY :: LCMapFlags
lCMAP_TRADITIONAL_CHINESE :: LCMapFlags
lCMAP_UPPERCASE :: LCMapFlags
lINGUISTIC_IGNORECASE :: LCMapFlags
lINGUISTIC_IGNOREDIACRITIC :: LCMapFlags
nORM_IGNORECASE :: LCMapFlags
nORM_IGNORENONSPACE :: LCMapFlags
nORM_IGNOREKANATYPE :: LCMapFlags
nORM_IGNORESYMBOLS :: LCMapFlags
nORM_IGNOREWIDTH :: LCMapFlags
nORM_LINGUISTIC_CASING :: LCMapFlags
sORT_STRINGSORT :: LCMapFlags
getNLSVersionEx :: Maybe String -> IO NLSVERSIONINFOEX
c_GetNLSVersionEx :: NLS_FUNCTION -> LPCWSTR -> Ptr NLSVERSIONINFOEX -> IO Bool
lCMapStringEx :: Maybe String -> LCMapFlags -> String -> NLSVERSIONINFOEX -> IO String
c_LCMapStringEx :: LPCWSTR -> LCMapFlags -> LPCWSTR -> CInt -> LPWSTR -> CInt -> Ptr NLSVERSIONINFOEX -> LPVOID -> LPARAM -> IO CInt
lCMapString :: LCID -> LCMapFlags -> String -> Int -> IO String
c_LCMapString :: LCID -> LCMapFlags -> LPCTSTR -> Int -> LPCTSTR -> Int -> IO Int
lCID_INSTALLED :: LocaleTestFlags
lCID_SUPPORTED :: LocaleTestFlags
isValidLocaleName :: Maybe String -> IO Bool
c_IsValidLocaleName :: LPCWSTR -> IO Bool
isValidLocale :: LCID -> LocaleTestFlags -> IO Bool
lOCALE_ALL :: EnumLocalesFlag
lOCALE_ALTERNATE_SORTS :: EnumLocalesFlag
lOCALE_REPLACEMENT :: EnumLocalesFlag
lOCALE_SUPPLEMENTAL :: EnumLocalesFlag
lOCALE_WINDOWS :: EnumLocalesFlag
mkLOCALE_ENUMPROCEX :: LOCALE_ENUMPROCEX -> IO (FunPtr LOCALE_ENUMPROCEX)
enumSystemLocalesEx :: LOCALE_ENUMPROCEX -> EnumLocalesFlag -> LPARAM -> IO ()
c_EnumSystemLocalesEx :: FunPtr LOCALE_ENUMPROCEX -> DWORD -> LPARAM -> LPVOID -> IO Bool
enumSystemLocalesEx' :: EnumLocalesFlag -> Maybe Bool -> IO [String]
isValidCodePage :: CodePage -> IO Bool
getUserDefaultLCID :: LCID
getUserDefaultLangID :: LANGID
lOCALE_NAME_INVARIANT :: Maybe String
lOCALE_NAME_SYSTEM_DEFAULT :: Maybe String
lOCALE_NAME_USER_DEFAULT :: Maybe String
getUserDefaultLocaleName :: IO String

-- | Helper function for use with <a>c_GetUserDefaultLocaleName</a> or
--   <a>c_GetSystemDefaultLocaleName</a>. See
--   <a>getUserDefaultLocaleName</a> and
--   <tt>getSystemUserDefaultLocaleName</tt>.
getDefaultLocaleName :: String -> (LPWSTR -> CInt -> IO CInt) -> IO String
c_GetUserDefaultLocaleName :: LPWSTR -> CInt -> IO CInt
lOCALE_NAME_MAX_LENGTH :: CInt
getThreadLocale :: IO LCID
getSystemDefaultLCID :: LCID
getSystemDefaultLangID :: LANGID
getSystemDefaultLocaleName :: IO String
c_GetSystemDefaultLocaleName :: LPWSTR -> CInt -> IO CInt
getOEMCP :: CodePage
lANG_NEUTRAL :: PrimaryLANGID
lANG_BULGARIAN :: PrimaryLANGID
lANG_CHINESE :: PrimaryLANGID
lANG_CZECH :: PrimaryLANGID
lANG_DANISH :: PrimaryLANGID
lANG_GERMAN :: PrimaryLANGID
lANG_GREEK :: PrimaryLANGID
lANG_ENGLISH :: PrimaryLANGID
lANG_SPANISH :: PrimaryLANGID
lANG_FINNISH :: PrimaryLANGID
lANG_FRENCH :: PrimaryLANGID
lANG_HUNGARIAN :: PrimaryLANGID
lANG_ICELANDIC :: PrimaryLANGID
lANG_ITALIAN :: PrimaryLANGID
lANG_JAPANESE :: PrimaryLANGID
lANG_KOREAN :: PrimaryLANGID
lANG_DUTCH :: PrimaryLANGID
lANG_NORWEGIAN :: PrimaryLANGID
lANG_POLISH :: PrimaryLANGID
lANG_PORTUGUESE :: PrimaryLANGID
lANG_ROMANIAN :: PrimaryLANGID
lANG_RUSSIAN :: PrimaryLANGID
lANG_CROATIAN :: PrimaryLANGID
lANG_SLOVAK :: PrimaryLANGID
lANG_SWEDISH :: PrimaryLANGID
lANG_TURKISH :: PrimaryLANGID
lANG_SLOVENIAN :: PrimaryLANGID
lANG_ARABIC :: PrimaryLANGID
lANG_CATALAN :: PrimaryLANGID
lANG_HEBREW :: PrimaryLANGID
lANG_SERBIAN :: PrimaryLANGID
lANG_ALBANIAN :: PrimaryLANGID
lANG_THAI :: PrimaryLANGID
lANG_URDU :: PrimaryLANGID
lANG_INDONESIAN :: PrimaryLANGID
lANG_BELARUSIAN :: PrimaryLANGID
lANG_ESTONIAN :: PrimaryLANGID
lANG_LATVIAN :: PrimaryLANGID
lANG_LITHUANIAN :: PrimaryLANGID
lANG_FARSI :: PrimaryLANGID
lANG_VIETNAMESE :: PrimaryLANGID
lANG_ARMENIAN :: PrimaryLANGID
lANG_AZERI :: PrimaryLANGID
lANG_BASQUE :: PrimaryLANGID
lANG_MACEDONIAN :: PrimaryLANGID
lANG_AFRIKAANS :: PrimaryLANGID
lANG_GEORGIAN :: PrimaryLANGID
lANG_FAEROESE :: PrimaryLANGID
lANG_HINDI :: PrimaryLANGID
lANG_MALAY :: PrimaryLANGID
lANG_KAZAK :: PrimaryLANGID
lANG_SWAHILI :: PrimaryLANGID
lANG_UZBEK :: PrimaryLANGID
lANG_TATAR :: PrimaryLANGID
lANG_BENGALI :: PrimaryLANGID
lANG_PUNJABI :: PrimaryLANGID
lANG_GUJARATI :: PrimaryLANGID
lANG_ORIYA :: PrimaryLANGID
lANG_TAMIL :: PrimaryLANGID
lANG_TELUGU :: PrimaryLANGID
lANG_KANNADA :: PrimaryLANGID
lANG_MALAYALAM :: PrimaryLANGID
lANG_ASSAMESE :: PrimaryLANGID
lANG_MARATHI :: PrimaryLANGID
lANG_SANSKRIT :: PrimaryLANGID
lANG_KONKANI :: PrimaryLANGID
lANG_MANIPURI :: PrimaryLANGID
lANG_SINDHI :: PrimaryLANGID
lANG_KASHMIRI :: PrimaryLANGID
lANG_NEPALI :: PrimaryLANGID
sORT_DEFAULT :: SortID
sORT_JAPANESE_XJIS :: SortID
sORT_JAPANESE_UNICODE :: SortID
sORT_CHINESE_BIG5 :: SortID
sORT_CHINESE_UNICODE :: SortID
sORT_KOREAN_KSC :: SortID
sORT_KOREAN_UNICODE :: SortID
sUBLANG_NEUTRAL :: SubLANGID
sUBLANG_DEFAULT :: SubLANGID
sUBLANG_SYS_DEFAULT :: SubLANGID
sUBLANG_CHINESE_TRADITIONAL :: SubLANGID
sUBLANG_CHINESE_SIMPLIFIED :: SubLANGID
sUBLANG_CHINESE_HONGKONG :: SubLANGID
sUBLANG_CHINESE_SINGAPORE :: SubLANGID
sUBLANG_DUTCH :: SubLANGID
sUBLANG_DUTCH_BELGIAN :: SubLANGID
sUBLANG_ENGLISH_US :: SubLANGID
sUBLANG_ENGLISH_UK :: SubLANGID
sUBLANG_ENGLISH_AUS :: SubLANGID
sUBLANG_ENGLISH_CAN :: SubLANGID
sUBLANG_ENGLISH_NZ :: SubLANGID
sUBLANG_ENGLISH_EIRE :: SubLANGID
sUBLANG_FRENCH :: SubLANGID
sUBLANG_FRENCH_BELGIAN :: SubLANGID
sUBLANG_FRENCH_CANADIAN :: SubLANGID
sUBLANG_FRENCH_SWISS :: SubLANGID
sUBLANG_GERMAN :: SubLANGID
sUBLANG_GERMAN_SWISS :: SubLANGID
sUBLANG_GERMAN_AUSTRIAN :: SubLANGID
sUBLANG_ITALIAN :: SubLANGID
sUBLANG_ITALIAN_SWISS :: SubLANGID
sUBLANG_NORWEGIAN_BOKMAL :: SubLANGID
sUBLANG_NORWEGIAN_NYNORSK :: SubLANGID
sUBLANG_PORTUGUESE :: SubLANGID
sUBLANG_PORTUGUESE_BRAZILIAN :: SubLANGID
sUBLANG_SPANISH :: SubLANGID
sUBLANG_SPANISH_MEXICAN :: SubLANGID
sUBLANG_SPANISH_MODERN :: SubLANGID
sUBLANG_ARABIC_SAUDI_ARABIA :: SubLANGID
sUBLANG_ARABIC_IRAQ :: SubLANGID
sUBLANG_ARABIC_EGYPT :: SubLANGID
sUBLANG_ARABIC_LIBYA :: SubLANGID
sUBLANG_ARABIC_ALGERIA :: SubLANGID
sUBLANG_ARABIC_MOROCCO :: SubLANGID
sUBLANG_ARABIC_TUNISIA :: SubLANGID
sUBLANG_ARABIC_OMAN :: SubLANGID
sUBLANG_ARABIC_YEMEN :: SubLANGID
sUBLANG_ARABIC_SYRIA :: SubLANGID
sUBLANG_ARABIC_JORDAN :: SubLANGID
sUBLANG_ARABIC_LEBANON :: SubLANGID
sUBLANG_ARABIC_KUWAIT :: SubLANGID
sUBLANG_ARABIC_UAE :: SubLANGID
sUBLANG_ARABIC_BAHRAIN :: SubLANGID
sUBLANG_ARABIC_QATAR :: SubLANGID
sUBLANG_AZERI_CYRILLIC :: SubLANGID
sUBLANG_AZERI_LATIN :: SubLANGID
sUBLANG_CHINESE_MACAU :: SubLANGID

-- | The <a>IO</a> input functions (e.g. <a>getLine</a>) don't
--   automatically convert to Unicode, so this function is provided to make
--   the conversion from a multibyte string in the given code page to a
--   proper Unicode string. To get the code page for the console, use
--   <tt>getConsoleCP</tt>.
sUBLANG_ENGLISH_SOUTH_AFRICA :: SubLANGID
sUBLANG_ENGLISH_JAMAICA :: SubLANGID
sUBLANG_ENGLISH_CARIBBEAN :: SubLANGID
sUBLANG_ENGLISH_BELIZE :: SubLANGID
sUBLANG_ENGLISH_TRINIDAD :: SubLANGID
sUBLANG_ENGLISH_PHILIPPINES :: SubLANGID
sUBLANG_ENGLISH_ZIMBABWE :: SubLANGID
sUBLANG_FRENCH_LUXEMBOURG :: SubLANGID
sUBLANG_FRENCH_MONACO :: SubLANGID
sUBLANG_GERMAN_LUXEMBOURG :: SubLANGID
sUBLANG_GERMAN_LIECHTENSTEIN :: SubLANGID
sUBLANG_KASHMIRI_INDIA :: SubLANGID
sUBLANG_KOREAN :: SubLANGID
sUBLANG_LITHUANIAN :: SubLANGID
sUBLANG_MALAY_MALAYSIA :: SubLANGID
sUBLANG_MALAY_BRUNEI_DARUSSALAM :: SubLANGID
sUBLANG_NEPALI_INDIA :: SubLANGID
sUBLANG_SERBIAN_LATIN :: SubLANGID
sUBLANG_SERBIAN_CYRILLIC :: SubLANGID
sUBLANG_SPANISH_GUATEMALA :: SubLANGID
sUBLANG_SPANISH_COSTA_RICA :: SubLANGID
sUBLANG_SPANISH_PANAMA :: SubLANGID
sUBLANG_SPANISH_DOMINICAN_REPUBLIC :: SubLANGID
sUBLANG_SPANISH_VENEZUELA :: SubLANGID
sUBLANG_SPANISH_COLOMBIA :: SubLANGID
sUBLANG_SPANISH_PERU :: SubLANGID
sUBLANG_SPANISH_ARGENTINA :: SubLANGID
sUBLANG_SPANISH_ECUADOR :: SubLANGID
sUBLANG_SPANISH_CHILE :: SubLANGID
sUBLANG_SPANISH_URUGUAY :: SubLANGID
sUBLANG_SPANISH_PARAGUAY :: SubLANGID
sUBLANG_SPANISH_BOLIVIA :: SubLANGID
sUBLANG_SPANISH_EL_SALVADOR :: SubLANGID
sUBLANG_SPANISH_HONDURAS :: SubLANGID
sUBLANG_SPANISH_NICARAGUA :: SubLANGID
sUBLANG_SPANISH_PUERTO_RICO :: SubLANGID
sUBLANG_SWEDISH :: SubLANGID
sUBLANG_SWEDISH_FINLAND :: SubLANGID
sUBLANG_URDU_PAKISTAN :: SubLANGID
sUBLANG_URDU_INDIA :: SubLANGID
sUBLANG_UZBEK_LATIN :: SubLANGID
sUBLANG_UZBEK_CYRILLIC :: SubLANGID
maybePtr :: Maybe (Ptr a) -> Ptr a
ptrToMaybe :: Ptr a -> Maybe (Ptr a)
numToMaybe :: (Eq a, Num a) => a -> Maybe a
maybeNum :: Num a => Maybe a -> a
tryWithoutNull :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String

-- | Support for API calls that return the required size, in characters
--   including a null character, of the buffer when passed a buffer size of
--   zero.
trySized :: String -> (LPTSTR -> CInt -> IO CInt) -> IO String
try' :: Storable a => String -> (Ptr a -> PDWORD -> IO BOOL) -> DWORD -> IO [a]

-- | See also: <a>maybePeek</a> function.
peekMaybe :: Storable a => Ptr a -> IO (Maybe a)

-- | See also: <a>maybeWith</a> function.
withMaybe :: Storable a => Maybe a -> (Ptr a -> IO b) -> IO b

-- | Translate from a Windows API day, month, year, and era format picture
--   to the closest corresponding format string used by <a>formatTime</a>.
fromDateFormatPicture :: String -> Maybe String

-- | Translate from a Windows API hours, minute, and second format picture
--   to the closest corresponding format string used by <a>formatTime</a>.
fromTimeFormatPicture :: String -> Maybe String
