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


-- | A binding to part of the Win32 library
--   
--   A binding to part of the Win32 library.
@package Win32
@version 2.5.4.1


-- | 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
missingLibrary :: FilePath -> Unsupported
missingFunction :: String -> Unsupported
missingValue :: String -> Unsupported
missingWin32Function :: String -> String -> Unsupported
missingWin32Value :: String -> String -> Unsupported
doesn'tSupport :: String
upgradeVista :: String
removed :: String
upgradeWindowsOS :: String -> String
unsupportedIfNull :: Unsupported -> IO (Ptr a) -> IO (Ptr a)
unsupportedVal :: String -> IO Bool -> String -> a -> a
instance GHC.Show.Show System.Win32.Exception.Unsupported.Unsupported
instance GHC.Exception.Exception System.Win32.Exception.Unsupported.Unsupported


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.Types
type BOOL = Bool
type BYTE = Word8
type UCHAR = CUChar
type USHORT = Word16
type UINT = Word32
type INT = Int32
type WORD = Word16
type DWORD = Word32
type LONG = Int32
type FLOAT = Float
type LARGE_INTEGER = Int64
type DWORD32 = Word32
type DWORD64 = Word64
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 SHORT = Int16
type DWORD_PTR = Ptr DWORD32
type INT_PTR = Ptr CInt
type ULONG = Word32
type UINT_PTR = Word
type LONG_PTR = CIntPtr
type ULONG_PTR = CUIntPtr
type HALF_PTR = Ptr INT32
type DDWORD = Word64
type MbString = Maybe String
type MbINT = Maybe INT
type ATOM = WORD
type WPARAM = UINT_PTR
type LPARAM = LONG_PTR
type LRESULT = LONG_PTR
type SIZE_T = ULONG_PTR
type MbATOM = Maybe ATOM
type HRESULT = LONG
type Addr = Ptr ()
type LPVOID = Ptr ()
type LPBOOL = Ptr BOOL
type LPBYTE = Ptr BYTE
type PUCHAR = Ptr UCHAR
type LPDWORD = Ptr DWORD
type LPSTR = Ptr CChar
type LPCSTR = LPSTR
type LPWSTR = Ptr CWchar
type LPCWSTR = LPWSTR
type LPTSTR = Ptr TCHAR
type LPCTSTR = LPTSTR
type LPCTSTR_ = LPCTSTR
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
type MbLPVOID = Maybe LPVOID
type MbLPCSTR = Maybe LPCSTR
type MbLPCTSTR = Maybe 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
type TCHAR = CWchar
type HANDLE = Ptr ()
type ForeignHANDLE = ForeignPtr ()
newForeignHANDLE :: HANDLE -> IO ForeignHANDLE
handleToWord :: HANDLE -> UINT_PTR
type HKEY = ForeignHANDLE
type PKEY = HANDLE
nullHANDLE :: HANDLE
type MbHANDLE = Maybe HANDLE
type HINSTANCE = Ptr ()
type MbHINSTANCE = Maybe HINSTANCE
type HMODULE = Ptr ()
type MbHMODULE = Maybe HMODULE
nullFinalHANDLE :: ForeignPtr a
iNVALID_HANDLE_VALUE :: HANDLE
_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
c_get_osfhandle :: CInt -> 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
withStablePtr :: a -> (StablePtr a -> IO b) -> IO b
type ErrCode = DWORD
failIf :: (a -> Bool) -> String -> IO a -> IO a
failIf_ :: (a -> Bool) -> String -> IO a -> IO ()
failIfNeg :: (Num a, Ord a) => String -> IO a -> IO a
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
eRROR_INSUFFICIENT_BUFFER :: ErrCode
eRROR_MOD_NOT_FOUND :: ErrCode
eRROR_PROC_NOT_FOUND :: ErrCode
errorWin :: String -> IO a
failWith :: String -> ErrCode -> IO a
c_maperrno_func :: ErrCode -> IO Errno
ddwordToDwords :: DDWORD -> (DWORD, DWORD)
dwordsToDdword :: (DWORD, DWORD) -> DDWORD
try :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String
deleteObjectFinaliser :: FunPtr (Ptr a -> IO ())
localFree :: Ptr a -> IO (Ptr a)
getLastError :: IO ErrCode
setLastError :: ErrCode -> IO ()
getErrorMessage :: DWORD -> IO LPWSTR
lOWORD :: DWORD -> WORD
hIWORD :: DWORD -> WORD
castUINTPtrToPtr :: UINT_PTR -> Ptr a
castPtrToUINTPtr :: Ptr s -> UINT_PTR
type LCID = DWORD
type LANGID = WORD
type SortID = WORD
mAKELCID :: LANGID -> SortID -> LCID
lANGIDFROMLCID :: LCID -> LANGID
sORTIDFROMLCID :: LCID -> SortID
type SubLANGID = WORD
type PrimaryLANGID = WORD
mAKELANGID :: PrimaryLANGID -> SubLANGID -> LANGID
pRIMARYLANGID :: LANGID -> PrimaryLANGID
sUBLANGID :: LANGID -> SubLANGID

-- | 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


-- | 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
c_GetSystemTime :: Ptr SYSTEMTIME -> IO ()
getSystemTime :: IO SYSTEMTIME
c_SetSystemTime :: Ptr SYSTEMTIME -> IO BOOL
setSystemTime :: SYSTEMTIME -> IO ()
c_GetSystemTimeAsFileTime :: Ptr FILETIME -> IO ()
getSystemTimeAsFileTime :: IO FILETIME
c_GetLocalTime :: Ptr SYSTEMTIME -> IO ()
getLocalTime :: IO SYSTEMTIME
c_SetLocalTime :: Ptr SYSTEMTIME -> IO BOOL
setLocalTime :: SYSTEMTIME -> IO ()
c_GetSystemTimeAdjustment :: Ptr DWORD -> Ptr DWORD -> Ptr BOOL -> IO BOOL
getSystemTimeAdjustment :: IO (Maybe (Int, Int))
getTickCount :: IO DWORD
c_SetSystemTimeAdjustment :: DWORD -> BOOL -> IO BOOL
setSystemTimeAdjustment :: Maybe Int -> IO ()
c_GetTimeZoneInformation :: Ptr TIME_ZONE_INFORMATION -> IO DWORD
getTimeZoneInformation :: IO (TimeZoneId, TIME_ZONE_INFORMATION)
c_SystemTimeToFileTime :: Ptr SYSTEMTIME -> Ptr FILETIME -> IO BOOL
systemTimeToFileTime :: SYSTEMTIME -> IO FILETIME
c_FileTimeToSystemTime :: Ptr FILETIME -> Ptr SYSTEMTIME -> IO BOOL
fileTimeToSystemTime :: FILETIME -> IO SYSTEMTIME
c_GetFileTime :: HANDLE -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> IO BOOL
getFileTime :: HANDLE -> IO (FILETIME, FILETIME, FILETIME)
c_SetFileTime :: HANDLE -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> IO BOOL
setFileTime :: HANDLE -> FILETIME -> FILETIME -> FILETIME -> IO ()
c_FileTimeToLocalFileTime :: Ptr FILETIME -> Ptr FILETIME -> IO BOOL
fileTimeToLocalFileTime :: FILETIME -> IO FILETIME
c_LocalFileTimeToFileTime :: Ptr FILETIME -> Ptr FILETIME -> IO BOOL
localFileTimeToFileTime :: FILETIME -> IO FILETIME
c_QueryPerformanceFrequency :: Ptr LARGE_INTEGER -> IO BOOL
queryPerformanceFrequency :: IO Integer
c_QueryPerformanceCounter :: Ptr LARGE_INTEGER -> IO BOOL
queryPerformanceCounter :: IO Integer
type GetTimeFormatFlags = DWORD
lOCALE_NOUSEROVERRIDE :: GetTimeFormatFlags
lOCALE_USE_CP_ACP :: GetTimeFormatFlags
tIME_NOMINUTESORSECONDS :: GetTimeFormatFlags
tIME_NOSECONDS :: GetTimeFormatFlags
tIME_NOTIMEMARKER :: GetTimeFormatFlags
c_GetTimeFormat :: LCID -> GetTimeFormatFlags -> Ptr SYSTEMTIME -> LPCTSTR -> LPTSTR -> CInt -> IO CInt
tIME_FORCE24HOURFORMAT :: GetTimeFormatFlags
getTimeFormat :: LCID -> GetTimeFormatFlags -> SYSTEMTIME -> String -> IO String
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.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.SYSTEMTIME
instance GHC.Classes.Eq System.Win32.Time.SYSTEMTIME
instance GHC.Show.Show System.Win32.Time.SYSTEMTIME
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 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


-- | 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.NLS
lOCALE_SYSTEM_DEFAULT :: LCID
lOCALE_USER_DEFAULT :: LCID
lOCALE_NEUTRAL :: LCID
convertDefaultLocale :: LCID -> IO LCID
type CodePage = UINT
cP_ACP :: CodePage
cP_MACCP :: CodePage
cP_OEMCP :: CodePage
getACP :: IO CodePage
setThreadLocale :: LCID -> IO ()
type LCTYPE = UINT
lOCALE_ICALENDARTYPE :: LCTYPE
lOCALE_SDATE :: LCTYPE
lOCALE_ICURRDIGITS :: LCTYPE
lOCALE_SDECIMAL :: LCTYPE
lOCALE_ICURRENCY :: LCTYPE
lOCALE_SGROUPING :: LCTYPE
lOCALE_IDIGITS :: LCTYPE
lOCALE_SLIST :: LCTYPE
lOCALE_IFIRSTDAYOFWEEK :: LCTYPE
lOCALE_SLONGDATE :: LCTYPE
lOCALE_IFIRSTWEEKOFYEAR :: LCTYPE
lOCALE_SMONDECIMALSEP :: LCTYPE
lOCALE_ILZERO :: LCTYPE
lOCALE_SMONGROUPING :: LCTYPE
lOCALE_IMEASURE :: LCTYPE
lOCALE_SMONTHOUSANDSEP :: LCTYPE
setLocaleInfo :: LCID -> LCTYPE -> String -> IO ()
lOCALE_INEGCURR :: LCTYPE
lOCALE_SNEGATIVESIGN :: LCTYPE
c_SetLocaleInfo :: LCID -> LCTYPE -> LPCTSTR -> IO Bool
lOCALE_INEGNUMBER :: LCTYPE
type LCMapFlags = DWORD
lOCALE_SPOSITIVESIGN :: LCTYPE
lOCALE_SSHORTDATE :: LCTYPE
lCMAP_BYTEREV :: LCMapFlags
lOCALE_ITIME :: LCTYPE
lCMAP_FULLWIDTH :: LCMapFlags
lOCALE_STHOUSAND :: LCTYPE
lCMAP_HALFWIDTH :: LCMapFlags
lOCALE_S1159 :: LCTYPE
lCMAP_HIRAGANA :: LCMapFlags
lOCALE_STIME :: LCTYPE
lCMAP_KATAKANA :: LCMapFlags
lOCALE_S2359 :: LCTYPE
lCMAP_LOWERCASE :: LCMapFlags
lOCALE_STIMEFORMAT :: LCTYPE
lCMAP_SORTKEY :: LCMapFlags
lOCALE_SCURRENCY :: LCTYPE
lCMAP_UPPERCASE :: LCMapFlags
nORM_IGNORECASE :: LCMapFlags
nORM_IGNORENONSPACE :: LCMapFlags
nORM_IGNOREKANATYPE :: LCMapFlags
lCMapString :: LCID -> LCMapFlags -> String -> Int -> IO String
nORM_IGNORESYMBOLS :: LCMapFlags
nORM_IGNOREWIDTH :: LCMapFlags
sORT_STRINGSORT :: LCMapFlags
c_LCMapString :: LCID -> LCMapFlags -> LPCTSTR -> Int -> LPCTSTR -> Int -> IO Int
lCMAP_LINGUISTIC_CASING :: LCMapFlags
type LocaleTestFlags = DWORD
lCMAP_SIMPLIFIED_CHINESE :: LCMapFlags
lCID_INSTALLED :: LocaleTestFlags
lCMAP_TRADITIONAL_CHINESE :: LCMapFlags
lCID_SUPPORTED :: LocaleTestFlags
isValidLocale :: LCID -> LocaleTestFlags -> IO Bool
isValidCodePage :: CodePage -> IO Bool
getUserDefaultLCID :: LCID
getUserDefaultLangID :: LANGID
getThreadLocale :: IO LCID
getSystemDefaultLCID :: LCID
getSystemDefaultLangID :: LANGID
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
sORT_DEFAULT :: SortID
lANG_LATVIAN :: PrimaryLANGID
sORT_JAPANESE_XJIS :: SortID
lANG_LITHUANIAN :: PrimaryLANGID
sORT_JAPANESE_UNICODE :: SortID
lANG_FARSI :: PrimaryLANGID
sORT_CHINESE_BIG5 :: SortID
lANG_VIETNAMESE :: PrimaryLANGID
sORT_CHINESE_UNICODE :: SortID
lANG_ARMENIAN :: PrimaryLANGID
sORT_KOREAN_KSC :: SortID
sUBLANG_NEUTRAL :: SubLANGID
lANG_AZERI :: PrimaryLANGID
sORT_KOREAN_UNICODE :: SortID
sUBLANG_DEFAULT :: SubLANGID
lANG_BASQUE :: PrimaryLANGID
sUBLANG_SYS_DEFAULT :: SubLANGID
lANG_MACEDONIAN :: PrimaryLANGID
sUBLANG_CHINESE_TRADITIONAL :: SubLANGID
lANG_AFRIKAANS :: PrimaryLANGID
sUBLANG_CHINESE_SIMPLIFIED :: SubLANGID
lANG_GEORGIAN :: PrimaryLANGID
sUBLANG_CHINESE_HONGKONG :: SubLANGID
lANG_FAEROESE :: PrimaryLANGID
sUBLANG_CHINESE_SINGAPORE :: SubLANGID
lANG_HINDI :: PrimaryLANGID
sUBLANG_DUTCH :: SubLANGID
lANG_MALAY :: PrimaryLANGID
sUBLANG_DUTCH_BELGIAN :: SubLANGID
lANG_KAZAK :: PrimaryLANGID
sUBLANG_ENGLISH_US :: SubLANGID
lANG_SWAHILI :: PrimaryLANGID
sUBLANG_ENGLISH_UK :: SubLANGID
lANG_UZBEK :: PrimaryLANGID
sUBLANG_ENGLISH_AUS :: SubLANGID
lANG_TATAR :: PrimaryLANGID
sUBLANG_ENGLISH_CAN :: SubLANGID
lANG_BENGALI :: PrimaryLANGID
sUBLANG_ENGLISH_NZ :: SubLANGID
lANG_PUNJABI :: PrimaryLANGID
sUBLANG_ENGLISH_EIRE :: SubLANGID
lANG_GUJARATI :: PrimaryLANGID
sUBLANG_FRENCH :: SubLANGID
lANG_ORIYA :: PrimaryLANGID
sUBLANG_FRENCH_BELGIAN :: SubLANGID
lANG_TAMIL :: PrimaryLANGID
sUBLANG_FRENCH_CANADIAN :: SubLANGID
lANG_TELUGU :: PrimaryLANGID
sUBLANG_FRENCH_SWISS :: SubLANGID
lANG_KANNADA :: PrimaryLANGID
sUBLANG_GERMAN :: SubLANGID
lANG_MALAYALAM :: PrimaryLANGID
sUBLANG_GERMAN_SWISS :: SubLANGID
lANG_ASSAMESE :: PrimaryLANGID
sUBLANG_GERMAN_AUSTRIAN :: SubLANGID
lANG_MARATHI :: PrimaryLANGID
sUBLANG_ITALIAN :: SubLANGID
lANG_SANSKRIT :: PrimaryLANGID
sUBLANG_ITALIAN_SWISS :: SubLANGID
lANG_KONKANI :: PrimaryLANGID
sUBLANG_NORWEGIAN_BOKMAL :: SubLANGID
lANG_MANIPURI :: PrimaryLANGID
sUBLANG_NORWEGIAN_NYNORSK :: SubLANGID
lANG_SINDHI :: PrimaryLANGID
sUBLANG_PORTUGUESE :: SubLANGID
lANG_KASHMIRI :: PrimaryLANGID
sUBLANG_PORTUGUESE_BRAZILIAN :: SubLANGID
lANG_NEPALI :: PrimaryLANGID
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
stringToUnicode :: CodePage -> String -> IO String
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
multiByteToWideChar :: CodePage -> DWORD -> LPCSTR -> CInt -> LPWSTR -> CInt -> IO CInt
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 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


-- | 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
globalAlloc :: GlobalAllocFlags -> DWORD -> IO HGLOBAL
gMEM_NODISCARD :: GlobalAllocFlags
gMEM_NOT_BANKED :: GlobalAllocFlags
c_GlobalAlloc :: GlobalAllocFlags -> DWORD -> IO HGLOBAL
gMEM_NOTIFY :: GlobalAllocFlags
gMEM_ZEROINIT :: GlobalAllocFlags
globalFlags :: HGLOBAL -> IO GlobalAllocFlags
c_GlobalFlags :: HGLOBAL -> IO GlobalAllocFlags
globalFree :: HGLOBAL -> IO HGLOBAL
c_GlobalFree :: HGLOBAL -> IO HGLOBAL
globalHandle :: Addr -> IO HGLOBAL
c_GlobalHandle :: Addr -> IO HGLOBAL
globalLock :: HGLOBAL -> IO Addr
c_GlobalLock :: HGLOBAL -> IO Addr
globalReAlloc :: HGLOBAL -> DWORD -> GlobalAllocFlags -> IO HGLOBAL
c_GlobalReAlloc :: HGLOBAL -> DWORD -> GlobalAllocFlags -> IO HGLOBAL
globalSize :: HGLOBAL -> IO DWORD
c_GlobalSize :: HGLOBAL -> IO DWORD
globalUnlock :: HGLOBAL -> IO ()
c_GlobalUnlock :: HGLOBAL -> IO Bool
type HeapAllocFlags = DWORD
hEAP_GENERATE_EXCEPTIONS :: HeapAllocFlags
hEAP_NO_SERIALIZE :: HeapAllocFlags
hEAP_ZERO_MEMORY :: HeapAllocFlags
heapAlloc :: HANDLE -> HeapAllocFlags -> DWORD -> IO Addr
c_HeapAlloc :: HANDLE -> HeapAllocFlags -> DWORD -> IO Addr
heapCompact :: HANDLE -> HeapAllocFlags -> IO UINT
c_HeapCompact :: HANDLE -> HeapAllocFlags -> IO UINT
heapCreate :: HeapAllocFlags -> DWORD -> DWORD -> IO HANDLE
c_HeapCreate :: HeapAllocFlags -> DWORD -> DWORD -> IO HANDLE
heapDestroy :: HANDLE -> IO ()
c_HeapDestroy :: HANDLE -> IO Bool
heapFree :: HANDLE -> HeapAllocFlags -> Addr -> IO ()
c_HeapFree :: HANDLE -> HeapAllocFlags -> Addr -> IO Bool
heapLock :: HANDLE -> IO ()
c_HeapLock :: HANDLE -> IO Bool
heapReAlloc :: HANDLE -> HeapAllocFlags -> Addr -> DWORD -> IO Addr
c_HeapReAlloc :: HANDLE -> HeapAllocFlags -> Addr -> DWORD -> IO Addr
heapSize :: HANDLE -> HeapAllocFlags -> Addr -> IO DWORD
c_HeapSize :: HANDLE -> HeapAllocFlags -> Addr -> IO DWORD
heapUnlock :: HANDLE -> IO ()
c_HeapUnlock :: HANDLE -> IO Bool
heapValidate :: HANDLE -> HeapAllocFlags -> Addr -> IO Bool
type VirtualAllocFlags = DWORD
mEM_COMMIT :: VirtualAllocFlags
mEM_RESERVE :: VirtualAllocFlags
type ProtectFlags = DWORD
pAGE_READONLY :: ProtectFlags
pAGE_READWRITE :: ProtectFlags
pAGE_EXECUTE :: ProtectFlags
pAGE_EXECUTE_READ :: ProtectFlags
pAGE_EXECUTE_READWRITE :: ProtectFlags
pAGE_GUARD :: ProtectFlags
type FreeFlags = DWORD
pAGE_NOACCESS :: ProtectFlags
mEM_DECOMMIT :: FreeFlags
pAGE_NOCACHE :: ProtectFlags
mEM_RELEASE :: FreeFlags
virtualAlloc :: Addr -> DWORD -> VirtualAllocFlags -> ProtectFlags -> IO Addr
c_VirtualAlloc :: Addr -> DWORD -> DWORD -> DWORD -> IO Addr
virtualFree :: Addr -> DWORD -> FreeFlags -> IO ()
c_VirtualFree :: Addr -> DWORD -> FreeFlags -> IO Bool
virtualLock :: Addr -> DWORD -> IO ()
c_VirtualLock :: Addr -> DWORD -> IO Bool
virtualProtect :: Addr -> DWORD -> ProtectFlags -> IO ProtectFlags
c_VirtualProtect :: Addr -> DWORD -> DWORD -> Ptr DWORD -> IO Bool
virtualProtectEx :: HANDLE -> Addr -> DWORD -> ProtectFlags -> IO ProtectFlags
c_VirtualProtectEx :: HANDLE -> Addr -> DWORD -> DWORD -> Ptr DWORD -> IO Bool
virtualQueryEx :: HANDLE -> LPVOID -> Ptr MEMORY_BASIC_INFORMATION -> SIZE_T -> IO DWORD
c_VirtualQueryEx :: HANDLE -> LPVOID -> Ptr MEMORY_BASIC_INFORMATION -> SIZE_T -> IO DWORD
virtualUnlock :: Addr -> DWORD -> IO ()
c_VirtualUnlock :: Addr -> DWORD -> IO Bool
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 -> String -> IO (Maybe FilePath)
c_getWindowsDirectory :: LPTSTR -> UINT -> IO UINT
c_getSystemDirectory :: LPTSTR -> UINT -> IO UINT
c_getCurrentDirectory :: DWORD -> LPTSTR -> IO UINT
c_getTempPath :: DWORD -> LPTSTR -> IO UINT
c_GetFullPathName :: LPCTSTR -> DWORD -> LPTSTR -> Ptr LPTSTR -> IO DWORD
c_GetLongPathName :: LPCTSTR -> LPTSTR -> DWORD -> IO DWORD
c_GetShortPathName :: LPCTSTR -> LPTSTR -> DWORD -> IO DWORD
c_SearchPath :: LPCTSTR -> LPCTSTR -> LPCTSTR -> DWORD -> LPTSTR -> Ptr LPTSTR -> IO DWORD
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
c_GetSystemInfo :: Ptr SYSTEM_INFO -> IO ()
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
c_GetUserName :: LPTSTR -> LPDWORD -> IO Bool
sM_CYSIZEFRAME :: SMSetting
getUserName :: IO String
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
instance GHC.Show.Show System.Win32.Info.SYSTEM_INFO
instance GHC.Classes.Eq System.Win32.Info.ProcessorArchitecture
instance GHC.Show.Show System.Win32.Info.ProcessorArchitecture
instance Foreign.Storable.Storable System.Win32.Info.SYSTEM_INFO
instance Foreign.Storable.Storable System.Win32.Info.ProcessorArchitecture


-- | 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
sECURITY_ANONYMOUS :: FileAttributeOrFlag
fILE_FLAG_OVERLAPPED :: FileAttributeOrFlag
sECURITY_IDENTIFICATION :: FileAttributeOrFlag
fILE_FLAG_NO_BUFFERING :: FileAttributeOrFlag
sECURITY_IMPERSONATION :: FileAttributeOrFlag
fILE_FLAG_RANDOM_ACCESS :: FileAttributeOrFlag
sECURITY_DELEGATION :: FileAttributeOrFlag
fILE_FLAG_SEQUENTIAL_SCAN :: FileAttributeOrFlag
sECURITY_CONTEXT_TRACKING :: FileAttributeOrFlag
fILE_FLAG_DELETE_ON_CLOSE :: FileAttributeOrFlag
sECURITY_EFFECTIVE_ONLY :: FileAttributeOrFlag
fILE_FLAG_BACKUP_SEMANTICS :: FileAttributeOrFlag
sECURITY_SQOS_PRESENT :: FileAttributeOrFlag
fILE_FLAG_POSIX_SEMANTICS :: FileAttributeOrFlag
type MoveFileFlag = DWORD
sECURITY_VALID_SQOS_FLAGS :: FileAttributeOrFlag
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
type DefineDosDeviceFlags = DWORD
dRIVE_RAMDISK :: DriveType
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
newtype GET_FILEEX_INFO_LEVELS
GET_FILEEX_INFO_LEVELS :: (Word32) -> GET_FILEEX_INFO_LEVELS
getFileExInfoStandard :: GET_FILEEX_INFO_LEVELS
getFileExMaxInfoLevel :: GET_FILEEX_INFO_LEVELS
type LPSECURITY_ATTRIBUTES = Ptr ()
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 ()
c_DeleteFile :: LPCTSTR -> IO Bool
copyFile :: String -> String -> Bool -> IO ()
c_CopyFile :: LPCTSTR -> LPCTSTR -> Bool -> IO Bool
moveFile :: String -> String -> IO ()
c_MoveFile :: LPCTSTR -> LPCTSTR -> IO Bool
moveFileEx :: String -> String -> MoveFileFlag -> IO ()
c_MoveFileEx :: LPCTSTR -> LPCTSTR -> MoveFileFlag -> IO Bool
setCurrentDirectory :: String -> IO ()
c_SetCurrentDirectory :: LPCTSTR -> IO Bool
createDirectory :: String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()
c_CreateDirectory :: LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO Bool
createDirectoryEx :: String -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()
c_CreateDirectoryEx :: LPCTSTR -> LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO Bool
removeDirectory :: String -> IO ()
c_RemoveDirectory :: LPCTSTR -> IO Bool
getBinaryType :: String -> IO BinaryType
c_GetBinaryType :: LPCTSTR -> Ptr DWORD -> IO Bool
createFile :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE
c_CreateFile :: LPCTSTR -> AccessMode -> ShareMode -> LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> HANDLE -> IO HANDLE
closeHandle :: HANDLE -> IO ()
c_CloseHandle :: HANDLE -> IO Bool
c_CloseHandleFinaliser :: FunPtr (Ptr a -> IO ())
getFileType :: HANDLE -> IO FileType
flushFileBuffers :: HANDLE -> IO ()
c_FlushFileBuffers :: HANDLE -> IO Bool
setEndOfFile :: HANDLE -> IO ()
c_SetEndOfFile :: HANDLE -> IO Bool
setFileAttributes :: String -> FileAttributeOrFlag -> IO ()
c_SetFileAttributes :: LPCTSTR -> FileAttributeOrFlag -> IO Bool
getFileAttributes :: String -> IO FileAttributeOrFlag
c_GetFileAttributes :: LPCTSTR -> IO FileAttributeOrFlag
getFileAttributesExStandard :: String -> IO WIN32_FILE_ATTRIBUTE_DATA
c_GetFileAttributesEx :: LPCTSTR -> GET_FILEEX_INFO_LEVELS -> Ptr a -> IO BOOL
getFileInformationByHandle :: HANDLE -> IO BY_HANDLE_FILE_INFORMATION
c_GetFileInformationByHandle :: HANDLE -> Ptr BY_HANDLE_FILE_INFORMATION -> IO BOOL
type LPOVERLAPPED = Ptr ()
type MbLPOVERLAPPED = Maybe LPOVERLAPPED
win32_ReadFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD
c_ReadFile :: HANDLE -> Ptr a -> DWORD -> Ptr DWORD -> LPOVERLAPPED -> IO Bool
win32_WriteFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD
c_WriteFile :: HANDLE -> Ptr a -> DWORD -> Ptr DWORD -> LPOVERLAPPED -> IO Bool
findFirstChangeNotification :: String -> Bool -> FileNotificationFlag -> IO HANDLE
c_FindFirstChangeNotification :: LPCTSTR -> Bool -> FileNotificationFlag -> IO HANDLE
findNextChangeNotification :: HANDLE -> IO ()
c_FindNextChangeNotification :: HANDLE -> IO Bool
findCloseChangeNotification :: HANDLE -> IO ()
c_FindCloseChangeNotification :: HANDLE -> IO Bool
type WIN32_FIND_DATA = ()
newtype FindData
FindData :: (ForeignPtr WIN32_FIND_DATA) -> FindData
getFindDataFileName :: FindData -> IO FilePath
findFirstFile :: String -> IO (HANDLE, FindData)
c_FindFirstFile :: LPCTSTR -> Ptr WIN32_FIND_DATA -> IO HANDLE
findNextFile :: HANDLE -> FindData -> IO Bool
c_FindNextFile :: HANDLE -> Ptr WIN32_FIND_DATA -> IO BOOL
findClose :: HANDLE -> IO ()
c_FindClose :: HANDLE -> IO BOOL
defineDosDevice :: DefineDosDeviceFlags -> String -> String -> IO ()
c_DefineDosDevice :: DefineDosDeviceFlags -> LPCTSTR -> LPCTSTR -> IO Bool
areFileApisANSI :: IO Bool
setFileApisToOEM :: IO ()
setFileApisToANSI :: IO ()
setHandleCount :: UINT -> IO UINT
getLogicalDrives :: IO DWORD
c_GetLogicalDrives :: IO DWORD
getDiskFreeSpace :: Maybe String -> IO (DWORD, DWORD, DWORD, DWORD)
c_GetDiskFreeSpace :: LPCTSTR -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> IO Bool
setVolumeLabel :: String -> String -> IO ()
c_SetVolumeLabel :: LPCTSTR -> LPCTSTR -> IO Bool
instance GHC.Show.Show System.Win32.File.WIN32_FILE_ATTRIBUTE_DATA
instance GHC.Show.Show System.Win32.File.BY_HANDLE_FILE_INFORMATION
instance GHC.Classes.Ord System.Win32.File.GET_FILEEX_INFO_LEVELS
instance GHC.Classes.Eq System.Win32.File.GET_FILEEX_INFO_LEVELS
instance Foreign.Storable.Storable System.Win32.File.WIN32_FILE_ATTRIBUTE_DATA
instance Foreign.Storable.Storable System.Win32.File.BY_HANDLE_FILE_INFORMATION


-- | Handling symbolic link using Win32 API. [Vista of later and desktop
--   app only]
--   
--   Note: 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>
module System.Win32.SymbolicLink
type SymbolicLinkFlags = DWORD
sYMBOLIC_LINK_FLAG_FILE :: SymbolicLinkFlags
sYMBOLIC_LINK_FLAG_DIRECTORY :: SymbolicLinkFlags

-- | createSymbolicLink* functions don't check that file is exist or not.
--   
--   NOTE: createSymbolicLink* functions are <i>flipped arguments</i> to
--   provide compatiblity 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 ()
createSymbolicLinkFile :: FilePath -> FilePath -> IO ()
createSymbolicLinkDirectory :: FilePath -> FilePath -> IO ()
createSymbolicLink' :: FilePath -> FilePath -> SymbolicLinkFlags -> IO ()
c_CreateSymbolicLink :: LPTSTR -> LPTSTR -> SymbolicLinkFlags -> IO BOOL


-- | A collection of FFI declarations for accessing the Win32 registry.
module System.Win32.Registry
hKEY_CLASSES_ROOT :: HKEY
hKEY_CURRENT_CONFIG :: HKEY
hKEY_CURRENT_USER :: HKEY
hKEY_LOCAL_MACHINE :: HKEY
hKEY_USERS :: HKEY
regCloseKey :: HKEY -> IO ()
c_RegCloseKey :: PKEY -> IO ErrCode
regConnectRegistry :: Maybe String -> HKEY -> IO HKEY
c_RegConnectRegistry :: LPCTSTR -> PKEY -> Ptr PKEY -> IO ErrCode
regCreateKey :: HKEY -> String -> IO HKEY
c_RegCreateKey :: PKEY -> LPCTSTR -> Ptr PKEY -> IO ErrCode
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
regCreateKeyEx :: HKEY -> String -> String -> RegCreateOptions -> REGSAM -> Maybe LPSECURITY_ATTRIBUTES -> IO (HKEY, Bool)
kEY_READ :: REGSAM
kEY_SET_VALUE :: REGSAM
kEY_WRITE :: REGSAM
c_RegCreateKeyEx :: PKEY -> LPCTSTR -> DWORD -> LPCTSTR -> RegCreateOptions -> REGSAM -> LPSECURITY_ATTRIBUTES -> Ptr PKEY -> Ptr DWORD -> IO ErrCode
regDeleteKey :: HKEY -> String -> IO ()
c_RegDeleteKey :: PKEY -> LPCTSTR -> IO ErrCode
regDeleteValue :: HKEY -> String -> IO ()
c_RegDeleteValue :: PKEY -> LPCTSTR -> IO ErrCode
mallocWideChars :: Int -> IO (Ptr a)
regEnumKeys :: HKEY -> IO [String]
regEnumKeyVals :: HKEY -> IO [(String, String, RegValueType)]
regEnumKey :: HKEY -> DWORD -> LPTSTR -> DWORD -> IO (String, Int)
c_RegEnumKey :: PKEY -> DWORD -> LPTSTR -> DWORD -> IO ErrCode
regEnumValue :: HKEY -> DWORD -> LPTSTR -> DWORD -> LPBYTE -> DWORD -> IO (RegValueType, String, Int)
c_RegEnumValue :: PKEY -> DWORD -> LPTSTR -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> LPBYTE -> Ptr DWORD -> IO ErrCode
eRROR_NO_MORE_ITEMS :: ErrCode
regFlushKey :: HKEY -> IO ()
c_RegFlushKey :: PKEY -> IO ErrCode
regLoadKey :: HKEY -> String -> String -> IO ()
c_RegLoadKey :: PKEY -> LPCTSTR -> LPCTSTR -> IO ErrCode
type RegNotifyOptions = DWORD
rEG_NOTIFY_CHANGE_NAME :: RegNotifyOptions
rEG_NOTIFY_CHANGE_ATTRIBUTES :: RegNotifyOptions
rEG_NOTIFY_CHANGE_LAST_SET :: RegNotifyOptions
rEG_NOTIFY_CHANGE_SECURITY :: RegNotifyOptions
regNotifyChangeKeyValue :: HKEY -> Bool -> RegNotifyOptions -> HANDLE -> Bool -> IO ()
c_RegNotifyChangeKeyValue :: PKEY -> Bool -> RegNotifyOptions -> HANDLE -> Bool -> IO ErrCode
regOpenKey :: HKEY -> String -> IO HKEY
c_RegOpenKey :: PKEY -> LPCTSTR -> Ptr PKEY -> IO ErrCode
regOpenKeyEx :: HKEY -> String -> REGSAM -> IO HKEY
c_RegOpenKeyEx :: PKEY -> LPCTSTR -> DWORD -> REGSAM -> Ptr PKEY -> IO ErrCode
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
regQueryInfoKey :: HKEY -> IO RegInfoKey
c_RegQueryInfoKey :: PKEY -> LPTSTR -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr FILETIME -> IO ErrCode
regQueryValueKey :: HKEY -> Maybe String -> IO String
c_RegQueryValue :: PKEY -> LPCTSTR -> LPTSTR -> Ptr LONG -> IO ErrCode
regQueryValue :: HKEY -> Maybe String -> IO String
regQueryValueEx :: HKEY -> String -> LPBYTE -> Int -> IO RegValueType
c_RegQueryValueEx :: PKEY -> LPCTSTR -> Ptr DWORD -> Ptr DWORD -> LPBYTE -> Ptr DWORD -> IO ErrCode
regReplaceKey :: HKEY -> String -> String -> String -> IO ()
c_RegReplaceKey :: PKEY -> LPCTSTR -> LPCTSTR -> LPCTSTR -> IO ErrCode
type RegRestoreFlags = DWORD
rEG_WHOLE_HIVE_VOLATILE :: RegRestoreFlags
rEG_REFRESH_HIVE :: RegRestoreFlags
rEG_NO_LAZY_FLUSH :: RegRestoreFlags
regRestoreKey :: HKEY -> String -> RegRestoreFlags -> IO ()
c_RegRestoreKey :: PKEY -> LPCTSTR -> RegRestoreFlags -> IO ErrCode
regSaveKey :: HKEY -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()
c_RegSaveKey :: PKEY -> LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO ErrCode
regSetValue :: HKEY -> String -> String -> IO ()
c_RegSetValue :: PKEY -> LPCTSTR -> DWORD -> LPCTSTR -> Int -> IO ErrCode
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
regSetStringValue :: HKEY -> String -> String -> IO ()
rEG_SZ :: RegValueType
regSetValueEx :: HKEY -> String -> RegValueType -> LPTSTR -> Int -> IO ()
c_RegSetValueEx :: PKEY -> LPCTSTR -> DWORD -> RegValueType -> LPTSTR -> Int -> IO ErrCode
regUnLoadKey :: HKEY -> String -> IO ()
c_RegUnLoadKey :: PKEY -> LPCTSTR -> IO ErrCode


-- | 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
c_OpenProcess :: ProcessAccessRights -> BOOL -> ProcessId -> IO ProcessHandle
pROCESS_VM_OPERATION :: ProcessAccessRights
pROCESS_VM_READ :: ProcessAccessRights
openProcess :: ProcessAccessRights -> BOOL -> ProcessId -> IO ProcessHandle
pROCESS_VM_WRITE :: ProcessAccessRights
sYNCHORNIZE :: ProcessAccessRights
c_GetProcessId :: ProcessHandle -> IO ProcessId
getProcessId :: ProcessHandle -> IO ProcessId
c_GetCurrentProcess :: IO ProcessHandle
c_GetCurrentProcessId :: IO ProcessId
getCurrentProcessId :: IO ProcessId
getCurrentProcess :: IO ProcessHandle
type Th32SnapHandle = HANDLE
type Th32SnapFlags = DWORD

-- | ProcessId, number of threads, parent ProcessId, process base priority,
--   path of executable file
type ProcessEntry32 = (ProcessId, Int, ProcessId, LONG, String)
tH32CS_SNAPALL :: Th32SnapFlags
tH32CS_SNAPHEAPLIST :: Th32SnapFlags
tH32CS_SNAPMODULE :: Th32SnapFlags
tH32CS_SNAPPROCESS :: Th32SnapFlags
tH32CS_SNAPTHREAD :: Th32SnapFlags
c_CreateToolhelp32Snapshot :: Th32SnapFlags -> ProcessId -> IO Th32SnapHandle
c_Process32First :: Th32SnapHandle -> Ptr ProcessEntry32 -> IO BOOL
c_Process32Next :: Th32SnapHandle -> Ptr ProcessEntry32 -> IO BOOL

-- | 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
peekProcessEntry32 :: Ptr ProcessEntry32 -> IO ProcessEntry32

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


-- | 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


-- | 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
--   compatiblity 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 ()
c_CreateHardLink :: LPCTSTR -> LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO BOOL


-- | 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)

-- | As mapFile, but returns ByteString
mapFileBs :: FilePath -> IO ByteString
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
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 ()
c_OpenFileMapping :: DWORD -> BOOL -> LPCTSTR -> IO HANDLE
c_CreateFileMapping :: HANDLE -> Ptr () -> DWORD -> DWORD -> DWORD -> LPCTSTR -> IO HANDLE
c_MapViewOfFileEx :: HANDLE -> DWORD -> DWORD -> DWORD -> SIZE_T -> Ptr a -> IO (Ptr b)
c_UnmapViewOfFile :: Ptr a -> IO BOOL
c_UnmapViewOfFileFinaliser :: FunPtr (Ptr a -> IO ())


-- | 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)
peekDebugEvent :: Ptr a -> IO DebugEvent
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 ()
c_SuspendThread :: THANDLE -> IO DWORD
c_ResumeThread :: THANDLE -> IO DWORD
c_WaitForDebugEvent :: Ptr () -> DWORD -> IO BOOL
c_ContinueDebugEvent :: DWORD -> DWORD -> DWORD -> IO BOOL
c_DebugActiveProcess :: DWORD -> IO Bool
c_ReadProcessMemory :: PHANDLE -> Ptr () -> Ptr Word8 -> DWORD -> Ptr DWORD -> IO BOOL
c_WriteProcessMemory :: PHANDLE -> Ptr () -> Ptr Word8 -> DWORD -> Ptr DWORD -> IO BOOL
c_GetThreadContext :: THANDLE -> Ptr () -> IO BOOL
c_SetThreadContext :: THANDLE -> Ptr () -> IO BOOL
c_OutputDebugString :: LPTSTR -> IO ()
isDebuggerPresent :: IO BOOL
debugBreak :: IO ()
instance GHC.Show.Show System.Win32.DebugApi.DebugEventInfo
instance GHC.Show.Show System.Win32.DebugApi.Exception


-- | 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
c_SuspendThread :: THANDLE -> IO DWORD
resumeThread :: THANDLE -> IO DWORD
c_ResumeThread :: THANDLE -> IO DWORD
withSuspendedThread :: THANDLE -> IO a -> IO a
getThreadId :: THANDLE -> IO TID
c_GetThreadId :: THANDLE -> IO TID
getCurrentThreadId :: IO TID
c_GetCurrentThreadId :: IO TID


-- | A collection of FFI declarations for interfacing with Win32.
module System.Win32.DLL
disableThreadLibraryCalls :: HMODULE -> IO ()
c_DisableThreadLibraryCalls :: HMODULE -> IO Bool
freeLibrary :: HMODULE -> IO ()
c_FreeLibrary :: HMODULE -> IO Bool
c_FreeLibraryFinaliser :: FunPtr (HMODULE -> IO ())
getModuleFileName :: HMODULE -> IO String
c_GetModuleFileName :: HMODULE -> LPTSTR -> Int -> IO Bool
getModuleHandle :: Maybe String -> IO HMODULE
c_GetModuleHandle :: LPCTSTR -> IO HMODULE
getProcAddress :: HMODULE -> String -> IO Addr
c_GetProcAddress :: HMODULE -> LPCSTR -> IO Addr
loadLibrary :: String -> IO HINSTANCE
c_LoadLibrary :: LPCTSTR -> IO HINSTANCE
type LoadLibraryFlags = DWORD
lOAD_LIBRARY_AS_DATAFILE :: LoadLibraryFlags
lOAD_WITH_ALTERED_SEARCH_PATH :: LoadLibraryFlags
loadLibraryEx :: String -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE
c_LoadLibraryEx :: LPCTSTR -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE
setDllDirectory :: String -> IO ()
c_SetDllDirectory :: LPTSTR -> IO BOOL


-- | A collection of FFI declarations for interfacing with Win32 Console
--   API
module System.Win32.Console
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]


-- | 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


-- | 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


-- | 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


-- | 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
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.Show.Show System.Win32.SimpleMAPI.Message
instance GHC.Show.Show System.Win32.SimpleMAPI.Attachment
instance GHC.Show.Show System.Win32.SimpleMAPI.FileTag
instance GHC.Show.Show System.Win32.SimpleMAPI.Recipient
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


-- | 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)
setWindowClosure :: HWND -> WindowClosure -> IO ()
c_SetWindowLongPtr :: HWND -> INT -> Ptr LONG -> IO (Ptr LONG)
createWindow :: ClassName -> String -> WindowStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HINSTANCE -> WindowClosure -> IO HWND
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
defWindowProc :: Maybe HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT
c_DefWindowProc :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT
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
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
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 :: String -> String -> IO (Maybe HWND)
findWindowByName :: String -> IO (Maybe HWND)
c_FindWindow :: LPCTSTR -> LPCTSTR -> IO HWND
findWindowEx :: HWND -> HWND -> String -> 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


-- | 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


-- | 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 :: 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 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.OBJECT_NAME_INFORMATION
instance GHC.Show.Show System.Win32.MinTTY.UNICODE_STRING
instance GHC.Show.Show System.Win32.MinTTY.FILE_NAME_INFO
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


-- | 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 -> String -> IO ()
c_AppendMenu :: HMENU -> UINT -> MenuID -> LPCTSTR -> IO Bool
insertMenu :: HMENU -> MenuItem -> MenuFlag -> MenuID -> String -> IO ()
c_InsertMenu :: HMENU -> UINT -> UINT -> MenuID -> LPCTSTR -> IO Bool
modifyMenu :: HMENU -> MenuItem -> MenuFlag -> MenuID -> 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
c_GetWindowLongPtr :: HANDLE -> INT -> IO LONG_PTR
uLW_ALPHA :: DWORD
uLW_COLORKEY :: DWORD
uLW_OPAQUE :: DWORD


-- | 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


-- | 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


-- | 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 = Ptr DWORD32


-- | 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
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


-- | 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.Show.Show System.Win32.Info.Version.OSVERSIONINFOEX
instance GHC.Classes.Eq System.Win32.Info.Version.ProductType
instance GHC.Show.Show System.Win32.Info.Version.ProductType
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


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


-- | 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
c_SendInput :: UINT -> LPINPUT -> Int -> 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
instance GHC.Show.Show System.Win32.Automation.Input.INPUT
instance GHC.Show.Show System.Win32.Automation.Input.HARDWAREINPUT
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
