-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A binding to Windows Win32 API. -- -- This library contains direct bindings to the Windows Win32 APIs for -- Haskell. @package Win32 @version 2.14.1.0 -- | Exception handling if using unsupported Win32 API. module System.Win32.Exception.Unsupported data Unsupported MissingLibrary :: FilePath -> String -> Unsupported MissingFunction :: String -> String -> Unsupported MissingValue :: String -> String -> Unsupported 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.Type.Exception System.Win32.Exception.Unsupported.Unsupported -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.Types type PrimaryLANGID = WORD type SubLANGID = WORD type SortID = WORD type LANGID = WORD type LCID = DWORD type ErrCode = DWORD type MbHMODULE = Maybe HMODULE type HMODULE = Ptr () type MbHINSTANCE = Maybe HINSTANCE type HINSTANCE = Ptr () type MbHANDLE = Maybe HANDLE type PKEY = HANDLE type HKEY = ForeignHANDLE type ForeignHANDLE = ForeignPtr () type HANDLE = Ptr () type TCHAR = CWchar type MbLPCTSTR = Maybe LPCTSTR type MbLPCSTR = Maybe LPCSTR type MbLPVOID = Maybe LPVOID type LPCTSTR_ = LPCTSTR type LPCTSTR = LPTSTR type LPTSTR = Ptr TCHAR type LPCWSTR = LPWSTR type LPWSTR = Ptr CWchar type LPCSTR = LPSTR type LPSTR = Ptr CChar type LPDWORD = Ptr DWORD type PUCHAR = Ptr UCHAR type LPBYTE = Ptr BYTE type LPBOOL = Ptr BOOL type LPVOID = Ptr () type Addr = Ptr () type HRESULT = LONG type MbATOM = Maybe ATOM type SIZE_T = ULONG_PTR type LRESULT = LONG_PTR type LPARAM = LONG_PTR type WPARAM = UINT_PTR type ATOM = WORD type MbINT = Maybe INT type MbString = Maybe String type DDWORD = Word64 type HALF_PTR = Ptr INT32 type DWORD_PTR = ULONG_PTR type ULONG_PTR = CUIntPtr type LONG_PTR = CIntPtr type UINT_PTR = Word type ULONG = Word32 type INT_PTR = Ptr CInt type SHORT = Int16 type ULONG64 = Word64 type ULONG32 = Word32 type UINT64 = Word64 type UINT32 = Word32 type LONG64 = Int64 type LONG32 = Int32 type INT64 = Int64 type INT32 = Int32 type DWORD64 = Word64 type DWORD32 = Word32 type LARGE_INTEGER = Int64 type FLOAT = Float type LONG = Int32 type DWORD = Word32 type WORD = Word16 type INT = Int32 type UINT = Word32 type USHORT = Word16 type UCHAR = CUChar type BYTE = Word8 type BOOL = Bool sUBLANGID :: LANGID -> SubLANGID pRIMARYLANGID :: LANGID -> PrimaryLANGID mAKELANGID :: PrimaryLANGID -> SubLANGID -> LANGID sORTIDFROMLCID :: LCID -> SortID lANGIDFROMLCID :: LCID -> LANGID mAKELCID :: LANGID -> SortID -> LCID castPtrToUINTPtr :: Ptr s -> UINT_PTR castUINTPtrToPtr :: UINT_PTR -> Ptr a hIWORD :: DWORD -> WORD lOWORD :: DWORD -> WORD getErrorMessage :: DWORD -> IO LPWSTR setLastError :: ErrCode -> IO () getLastError :: IO ErrCode localFree :: Ptr a -> IO (Ptr a) deleteObjectFinaliser :: FunPtr (Ptr a -> IO ()) c_maperrno_func :: ErrCode -> IO Errno c_get_osfhandle :: CInt -> IO HANDLE -- | Returns -1 on error. Otherwise writes two values representing the file -- into the given ptrs. internal_getUniqueFileInfo :: HANDLE -> Ptr Word64 -> Ptr Word64 -> IO () internal_lockFile :: CUIntPtr -> Word64 -> Word64 -> CInt -> IO CInt _open_osfhandle :: CIntPtr -> CInt -> IO CInt 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 withTString :: String -> (LPTSTR -> IO a) -> IO a withFilePath :: FilePath -> (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 -- | Wrapper around useAsCString, checking the encoded -- FilePath for internal NUL codepoints as these are disallowed in -- Windows filepaths. See -- https://gitlab.haskell.org/ghc/ghc/-/issues/13660 useAsCWStringSafe :: FilePath -> (CWString -> IO a) -> IO a newForeignHANDLE :: HANDLE -> IO ForeignHANDLE handleToWord :: HANDLE -> UINT_PTR nullHANDLE :: HANDLE nullHINSTANCE :: HINSTANCE nullFinalHANDLE :: ForeignPtr a iNVALID_HANDLE_VALUE :: HANDLE iNVALID_SET_FILE_POINTER :: DWORD -- | Create a Haskell Handle from a Windows HANDLE. -- -- Beware that this function allocates a new file descriptor. A -- consequence of this is that calling hANDLEToHandle on the -- standard Windows handles will not give you stdin, -- stdout, or stderr. For example, if you run this code: -- --
--   import Graphics.Win32.Misc
--   stdoutHANDLE <- getStdHandle sTD_OUTPUT_HANDLE
--   stdout2 <- hANDLEToHandle stdoutHANDLE
--   
-- -- Then although you can use stdout2 to write to standard -- output, it is not the case that stdout == stdout2. hANDLEToHandle :: HANDLE -> IO Handle -- | Extract a Windows HANDLE from a Haskell Handle and -- perform an action on it. withHandleToHANDLE :: Handle -> (HANDLE -> IO a) -> IO a withHandleToHANDLENative :: Handle -> (HANDLE -> IO a) -> IO a withHandleToHANDLEPosix :: Handle -> (HANDLE -> IO a) -> IO a withStablePtr :: a -> (StablePtr a -> IO b) -> IO b 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 eERROR_ENVVAR_NOT_FOUND :: ErrCode errorWin :: String -> IO a failWith :: String -> ErrCode -> IO a ddwordToDwords :: DDWORD -> (DWORD, DWORD) dwordsToDdword :: (DWORD, DWORD) -> DDWORD try :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String nullPtr :: Ptr a -- | Utilities for primitive marshalling of Windows' C strings. module System.Win32.String type LPSTR = Ptr CChar type LPCSTR = LPSTR type LPWSTR = Ptr CWchar type LPCWSTR = LPWSTR type TCHAR = CWchar type LPTSTR = Ptr TCHAR type LPCTSTR = LPTSTR type LPCTSTR_ = LPCTSTR withTString :: String -> (LPTSTR -> IO a) -> IO a withTStringLen :: String -> ((LPTSTR, Int) -> IO a) -> IO a peekTString :: LPCTSTR -> IO String peekTStringLen :: (LPCTSTR, Int) -> IO String newTString :: String -> IO LPCTSTR -- | Marshal a dummy Haskell string into a NUL terminated C wide string -- using temporary storage. -- -- 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. -- -- withTStringBufferLen :: Int -> ((LPTSTR, Int) -> IO a) -> IO a -- | FFI-bindings to interact with Win32 Security module System.Win32.Security data SID type PSID = Ptr SID data ACL type PACL = Ptr ACL data SECURITY_DESCRIPTOR type SECURITY_DESCRIPTOR_CONTROL = WORD se_OWNER_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL se_GROUP_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL se_DACL_PRESENT :: SECURITY_DESCRIPTOR_CONTROL se_DACL_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL se_SACL_PRESENT :: SECURITY_DESCRIPTOR_CONTROL se_SACL_DEFAULTED :: SECURITY_DESCRIPTOR_CONTROL se_DACL_AUTO_INHERIT_REQ :: SECURITY_DESCRIPTOR_CONTROL se_SACL_AUTO_INHERIT_REQ :: SECURITY_DESCRIPTOR_CONTROL se_DACL_AUTO_INHERITED :: SECURITY_DESCRIPTOR_CONTROL se_SACL_AUTO_INHERITED :: SECURITY_DESCRIPTOR_CONTROL se_DACL_PROTECTED :: SECURITY_DESCRIPTOR_CONTROL se_SACL_PROTECTED :: SECURITY_DESCRIPTOR_CONTROL se_SELF_RELATIVE :: SECURITY_DESCRIPTOR_CONTROL type SECURITY_INFORMATION = DWORD oWNER_SECURITY_INFORMATION :: SECURITY_INFORMATION gROUP_SECURITY_INFORMATION :: SECURITY_INFORMATION dACL_SECURITY_INFORMATION :: SECURITY_INFORMATION sACL_SECURITY_INFORMATION :: SECURITY_INFORMATION getFileSecurity :: String -> SECURITY_INFORMATION -> IO SecurityDescriptor -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.Mem data MEMORY_BASIC_INFORMATION MEMORY_BASIC_INFORMATION :: Addr -> Addr -> DWORD -> SIZE_T -> DWORD -> DWORD -> DWORD -> MEMORY_BASIC_INFORMATION [mbiBaseAddress] :: MEMORY_BASIC_INFORMATION -> Addr [mbiAllocationBase] :: MEMORY_BASIC_INFORMATION -> Addr [mbiAllocationProtect] :: MEMORY_BASIC_INFORMATION -> DWORD [mbiRegionSize] :: MEMORY_BASIC_INFORMATION -> SIZE_T [mbiState] :: MEMORY_BASIC_INFORMATION -> DWORD [mbiProtect] :: MEMORY_BASIC_INFORMATION -> DWORD [mbiType] :: MEMORY_BASIC_INFORMATION -> DWORD copyMemory :: Ptr a -> Ptr a -> DWORD -> IO () moveMemory :: Ptr a -> Ptr a -> DWORD -> IO () fillMemory :: Ptr a -> DWORD -> BYTE -> IO () zeroMemory :: Ptr a -> DWORD -> IO () memset :: Ptr a -> CInt -> CSize -> IO () getProcessHeap :: IO HANDLE getProcessHeaps :: DWORD -> Addr -> IO DWORD type HGLOBAL = Addr type GlobalAllocFlags = UINT gMEM_INVALID_HANDLE :: GlobalAllocFlags gMEM_FIXED :: GlobalAllocFlags gMEM_MOVEABLE :: GlobalAllocFlags gPTR :: GlobalAllocFlags gHND :: GlobalAllocFlags gMEM_DDESHARE :: GlobalAllocFlags gMEM_SHARE :: GlobalAllocFlags gMEM_LOWER :: GlobalAllocFlags gMEM_NOCOMPACT :: GlobalAllocFlags gMEM_NODISCARD :: GlobalAllocFlags gMEM_NOT_BANKED :: GlobalAllocFlags gMEM_NOTIFY :: GlobalAllocFlags gMEM_ZEROINIT :: GlobalAllocFlags globalAlloc :: GlobalAllocFlags -> DWORD -> IO HGLOBAL globalFlags :: HGLOBAL -> IO GlobalAllocFlags globalFree :: HGLOBAL -> IO HGLOBAL globalHandle :: Addr -> IO HGLOBAL globalLock :: HGLOBAL -> IO Addr globalReAlloc :: HGLOBAL -> DWORD -> GlobalAllocFlags -> IO HGLOBAL globalSize :: HGLOBAL -> IO DWORD globalUnlock :: HGLOBAL -> IO () type HeapAllocFlags = DWORD hEAP_GENERATE_EXCEPTIONS :: HeapAllocFlags hEAP_NO_SERIALIZE :: HeapAllocFlags hEAP_ZERO_MEMORY :: HeapAllocFlags heapAlloc :: HANDLE -> HeapAllocFlags -> DWORD -> IO Addr heapCompact :: HANDLE -> HeapAllocFlags -> IO UINT heapCreate :: HeapAllocFlags -> DWORD -> DWORD -> IO HANDLE heapDestroy :: HANDLE -> IO () heapFree :: HANDLE -> HeapAllocFlags -> Addr -> IO () heapLock :: HANDLE -> IO () heapReAlloc :: HANDLE -> HeapAllocFlags -> Addr -> DWORD -> IO Addr heapSize :: HANDLE -> HeapAllocFlags -> Addr -> IO DWORD heapUnlock :: HANDLE -> IO () heapValidate :: HANDLE -> HeapAllocFlags -> Addr -> IO Bool virtualAlloc :: Addr -> DWORD -> VirtualAllocFlags -> ProtectFlags -> IO Addr virtualAllocEx :: HANDLE -> Addr -> DWORD -> VirtualAllocFlags -> ProtectFlags -> IO Addr type VirtualAllocFlags = DWORD mEM_COMMIT :: VirtualAllocFlags mEM_RESERVE :: VirtualAllocFlags virtualLock :: Addr -> DWORD -> IO () virtualUnlock :: Addr -> DWORD -> IO () virtualProtect :: Addr -> DWORD -> ProtectFlags -> IO ProtectFlags virtualProtectEx :: HANDLE -> Addr -> DWORD -> ProtectFlags -> IO ProtectFlags virtualQueryEx :: HANDLE -> LPVOID -> Ptr MEMORY_BASIC_INFORMATION -> SIZE_T -> IO DWORD type ProtectFlags = DWORD pAGE_READONLY :: ProtectFlags pAGE_READWRITE :: ProtectFlags pAGE_EXECUTE :: ProtectFlags pAGE_EXECUTE_READ :: ProtectFlags pAGE_EXECUTE_READWRITE :: ProtectFlags pAGE_GUARD :: ProtectFlags pAGE_NOACCESS :: ProtectFlags pAGE_NOCACHE :: ProtectFlags virtualFree :: Addr -> DWORD -> FreeFlags -> IO () virtualFreeEx :: HANDLE -> Addr -> DWORD -> FreeFlags -> IO () type FreeFlags = DWORD mEM_DECOMMIT :: FreeFlags mEM_RELEASE :: FreeFlags instance GHC.Show.Show System.Win32.Mem.MEMORY_BASIC_INFORMATION instance Foreign.Storable.Storable System.Win32.Mem.MEMORY_BASIC_INFORMATION -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.Info type SystemColor = UINT cOLOR_SCROLLBAR :: SystemColor cOLOR_BACKGROUND :: SystemColor cOLOR_ACTIVECAPTION :: SystemColor cOLOR_INACTIVECAPTION :: SystemColor cOLOR_MENU :: SystemColor cOLOR_WINDOW :: SystemColor cOLOR_WINDOWFRAME :: SystemColor cOLOR_MENUTEXT :: SystemColor cOLOR_WINDOWTEXT :: SystemColor cOLOR_CAPTIONTEXT :: SystemColor cOLOR_ACTIVEBORDER :: SystemColor cOLOR_INACTIVEBORDER :: SystemColor cOLOR_APPWORKSPACE :: SystemColor cOLOR_HIGHLIGHT :: SystemColor cOLOR_HIGHLIGHTTEXT :: SystemColor cOLOR_BTNFACE :: SystemColor cOLOR_BTNSHADOW :: SystemColor cOLOR_GRAYTEXT :: SystemColor cOLOR_BTNTEXT :: SystemColor cOLOR_INACTIVECAPTIONTEXT :: SystemColor cOLOR_BTNHIGHLIGHT :: SystemColor getSystemDirectory :: IO String getWindowsDirectory :: IO String getCurrentDirectory :: IO String getTemporaryDirectory :: IO String getFullPathName :: FilePath -> IO FilePath getLongPathName :: FilePath -> IO FilePath getShortPathName :: FilePath -> IO FilePath searchPath :: Maybe String -> FilePath -> Maybe String -> IO (Maybe FilePath) data ProcessorArchitecture PaUnknown :: WORD -> ProcessorArchitecture PaIntel :: ProcessorArchitecture PaMips :: ProcessorArchitecture PaAlpha :: ProcessorArchitecture PaPpc :: ProcessorArchitecture PaIa64 :: ProcessorArchitecture PaIa32OnIa64 :: ProcessorArchitecture PaAmd64 :: ProcessorArchitecture data SYSTEM_INFO SYSTEM_INFO :: ProcessorArchitecture -> DWORD -> LPVOID -> DWORD -> DWORD -> DWORD -> DWORD -> WORD -> WORD -> SYSTEM_INFO [siProcessorArchitecture] :: SYSTEM_INFO -> ProcessorArchitecture [siPageSize] :: SYSTEM_INFO -> DWORD [siMinimumApplicationAddress, siMaximumApplicationAddress] :: SYSTEM_INFO -> LPVOID [siActiveProcessorMask] :: SYSTEM_INFO -> DWORD [siNumberOfProcessors] :: SYSTEM_INFO -> DWORD [siProcessorType] :: SYSTEM_INFO -> DWORD [siAllocationGranularity] :: SYSTEM_INFO -> DWORD [siProcessorLevel] :: SYSTEM_INFO -> WORD [siProcessorRevision] :: SYSTEM_INFO -> WORD getSystemInfo :: IO SYSTEM_INFO type SMSetting = UINT sM_ARRANGE :: SMSetting sM_CLEANBOOT :: SMSetting sM_CMETRICS :: SMSetting sM_CMOUSEBUTTONS :: SMSetting sM_CXBORDER :: SMSetting sM_CYBORDER :: SMSetting sM_CXCURSOR :: SMSetting sM_CYCURSOR :: SMSetting sM_CXDLGFRAME :: SMSetting sM_CYDLGFRAME :: SMSetting sM_CXDOUBLECLK :: SMSetting sM_CYDOUBLECLK :: SMSetting sM_CXDRAG :: SMSetting sM_CYDRAG :: SMSetting sM_CXEDGE :: SMSetting sM_CYEDGE :: SMSetting sM_CXFRAME :: SMSetting sM_CYFRAME :: SMSetting sM_CXFULLSCREEN :: SMSetting sM_CYFULLSCREEN :: SMSetting sM_CXHSCROLL :: SMSetting sM_CYVSCROLL :: SMSetting sM_CXICON :: SMSetting sM_CYICON :: SMSetting sM_CXICONSPACING :: SMSetting sM_CYICONSPACING :: SMSetting sM_CXMAXIMIZED :: SMSetting sM_CYMAXIMIZED :: SMSetting sM_CXMENUCHECK :: SMSetting sM_CYMENUCHECK :: SMSetting sM_CXMENUSIZE :: SMSetting sM_CYMENUSIZE :: SMSetting sM_CXMIN :: SMSetting sM_CYMIN :: SMSetting sM_CXMINIMIZED :: SMSetting sM_CYMINIMIZED :: SMSetting sM_CXMINTRACK :: SMSetting sM_CYMINTRACK :: SMSetting sM_CXSCREEN :: SMSetting sM_CYSCREEN :: SMSetting sM_CXSIZE :: SMSetting sM_CYSIZE :: SMSetting sM_CXSIZEFRAME :: SMSetting sM_CYSIZEFRAME :: SMSetting sM_CXSMICON :: SMSetting sM_CYSMICON :: SMSetting sM_CXSMSIZE :: SMSetting sM_CYSMSIZE :: SMSetting sM_CXVSCROLL :: SMSetting sM_CYHSCROLL :: SMSetting sM_CYVTHUMB :: SMSetting sM_CYCAPTION :: SMSetting sM_CYKANJIWINDOW :: SMSetting sM_CYMENU :: SMSetting sM_CYSMCAPTION :: SMSetting sM_DBCSENABLED :: SMSetting sM_DEBUG :: SMSetting sM_MENUDROPALIGNMENT :: SMSetting sM_MIDEASTENABLED :: SMSetting sM_MOUSEPRESENT :: SMSetting sM_NETWORK :: SMSetting sM_PENWINDOWS :: SMSetting sM_SECURE :: SMSetting sM_SHOWSOUNDS :: SMSetting sM_SLOWMACHINE :: SMSetting sM_SWAPBUTTON :: SMSetting getUserName :: IO String -- | A collection of FFI declarations for using Windows DebugApi. module System.Win32.DebugApi type PID = DWORD type TID = DWORD type DebugEventId = (PID, TID) type ForeignAddress = Word32 type PHANDLE = Ptr () type THANDLE = Ptr () type ThreadInfo = (THANDLE, ForeignAddress, ForeignAddress) type ImageInfo = (HANDLE, ForeignAddress, DWORD, DWORD, ForeignAddress) type ExceptionInfo = (Bool, Bool, ForeignAddress) data Exception UnknownException :: Exception AccessViolation :: Bool -> ForeignAddress -> Exception ArrayBoundsExceeded :: Exception Breakpoint :: Exception DataTypeMisalignment :: Exception FltDenormalOperand :: Exception FltDivideByZero :: Exception FltInexactResult :: Exception FltInvalidOperation :: Exception FltOverflow :: Exception FltStackCheck :: Exception FltUnderflow :: Exception IllegalInstruction :: Exception InPageError :: Exception IntDivideByZero :: Exception IntOverflow :: Exception InvalidDisposition :: Exception NonContinuable :: Exception PrivilegedInstruction :: Exception SingleStep :: Exception StackOverflow :: Exception data DebugEventInfo UnknownDebugEvent :: DebugEventInfo Exception :: ExceptionInfo -> Exception -> DebugEventInfo CreateThread :: ThreadInfo -> DebugEventInfo CreateProcess :: PHANDLE -> ImageInfo -> ThreadInfo -> DebugEventInfo ExitThread :: TID -> DebugEventInfo ExitProcess :: PID -> DebugEventInfo LoadDll :: ImageInfo -> DebugEventInfo UnloadDll :: TID -> DebugEventInfo DebugString :: ForeignAddress -> Bool -> WORD -> DebugEventInfo type DebugEvent = (DebugEventId, DebugEventInfo) debugBreak :: IO () isDebuggerPresent :: IO BOOL waitForDebugEvent :: Maybe Int -> IO (Maybe DebugEvent) getDebugEvents :: Int -> IO [DebugEvent] continueDebugEvent :: DebugEventId -> Bool -> IO () debugActiveProcess :: PID -> IO () peekProcessMemory :: PHANDLE -> ForeignAddress -> Int -> Ptr a -> IO () readProcessMemory :: PHANDLE -> ForeignAddress -> Int -> IO (ForeignPtr a) pokeProcessMemory :: PHANDLE -> ForeignAddress -> Int -> Ptr a -> IO () withProcessMemory :: PHANDLE -> ForeignAddress -> Int -> (Ptr a -> IO b) -> IO b peekP :: Storable a => PHANDLE -> ForeignAddress -> IO a pokeP :: Storable a => PHANDLE -> ForeignAddress -> a -> IO () suspendThread :: THANDLE -> IO DWORD resumeThread :: THANDLE -> IO DWORD withSuspendedThread :: THANDLE -> IO a -> IO a getThreadContext :: THANDLE -> Ptr a -> IO () setThreadContext :: THANDLE -> Ptr a -> IO () useAllRegs :: Ptr a -> IO () withThreadContext :: THANDLE -> (Ptr a -> IO b) -> IO b rax :: Int rbx :: Int rcx :: Int rdx :: Int rsi :: Int rdi :: Int rbp :: Int rip :: Int rsp :: Int segCs :: Int segDs :: Int segEs :: Int segFs :: Int segGs :: Int eFlags :: Int dr :: Int -> Int setReg :: Ptr a -> Int -> DWORD -> IO () getReg :: Ptr a -> Int -> IO DWORD modReg :: Ptr a -> Int -> (DWORD -> DWORD) -> IO DWORD makeModThreadContext :: [(Int, DWORD -> DWORD)] -> Ptr a -> IO [DWORD] modifyThreadContext :: THANDLE -> [(Int, DWORD -> DWORD)] -> IO [DWORD] outputDebugString :: String -> IO () instance GHC.Show.Show System.Win32.DebugApi.Exception instance GHC.Show.Show System.Win32.DebugApi.DebugEventInfo -- | This modules provides just thread control APIs. This modules doesn't -- provide thread register control APIs. Because these APIs are used for -- Debugging. module System.Win32.Thread type THANDLE = Ptr () type TID = DWORD getCurrentThread :: IO THANDLE suspendThread :: THANDLE -> IO DWORD resumeThread :: THANDLE -> IO DWORD withSuspendedThread :: THANDLE -> IO a -> IO a getThreadId :: THANDLE -> IO TID getCurrentThreadId :: IO TID -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.DLL disableThreadLibraryCalls :: HMODULE -> IO () freeLibrary :: HMODULE -> IO () getModuleFileName :: HMODULE -> IO String getModuleHandle :: Maybe String -> IO HMODULE getProcAddress :: HMODULE -> String -> IO Addr loadLibrary :: String -> IO HMODULE loadLibraryEx :: String -> HANDLE -> LoadLibraryFlags -> IO HMODULE setDllDirectory :: Maybe String -> IO () type LoadLibraryFlags = DWORD lOAD_LIBRARY_AS_DATAFILE :: LoadLibraryFlags lOAD_WITH_ALTERED_SEARCH_PATH :: LoadLibraryFlags -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Resource beginUpdateResource :: String -> Bool -> IO HANDLE c_BeginUpdateResource :: LPCTSTR -> Bool -> IO HANDLE type ResourceImageType = UINT type HRSRC = Ptr () type HGLOBAL = Ptr () iMAGE_BITMAP :: ResourceImageType iMAGE_ICON :: ResourceImageType iMAGE_CURSOR :: ResourceImageType copyImage :: HANDLE -> ResourceImageType -> Int -> Int -> UINT -> IO HANDLE c_CopyImage :: HANDLE -> ResourceImageType -> Int -> Int -> UINT -> IO HANDLE endUpdateResource :: HANDLE -> BOOL -> IO () c_EndUpdateResource :: HANDLE -> BOOL -> IO Bool type ResourceType = LPCTSTR rT_ACCELERATOR :: ResourceType rT_ANICURSOR :: ResourceType rT_ANIICON :: ResourceType rT_BITMAP :: ResourceType rT_CURSOR :: ResourceType rT_DIALOG :: ResourceType rT_FONT :: ResourceType rT_FONTDIR :: ResourceType rT_GROUP_CURSOR :: ResourceType rT_GROUP_ICON :: ResourceType rT_HTML :: ResourceType findResource :: HMODULE -> String -> ResourceType -> IO HRSRC rT_ICON :: ResourceType rT_MENU :: ResourceType c_FindResource :: HMODULE -> LPCTSTR -> LPCTSTR -> IO HRSRC rT_MESSAGETABLE :: ResourceType rT_RCDATA :: ResourceType findResourceEx :: HMODULE -> String -> ResourceType -> WORD -> IO HRSRC rT_STRING :: ResourceType rT_VERSION :: ResourceType c_FindResourceEx :: HMODULE -> LPCTSTR -> LPCTSTR -> WORD -> IO HRSRC type ResourceSize = Int lR_DEFAULTSIZE :: ResourceSize type LoadImageFlags = UINT lR_DEFAULTCOLOR :: LoadImageFlags lR_CREATEDIBSECTION :: LoadImageFlags lR_LOADFROMFILE :: LoadImageFlags lR_LOADMAP3DCOLORS :: LoadImageFlags lR_LOADTRANSPARENT :: LoadImageFlags lR_MONOCHROME :: LoadImageFlags lR_SHARED :: LoadImageFlags loadImage :: HINSTANCE -> String -> ResourceImageType -> ResourceSize -> ResourceSize -> LoadImageFlags -> IO HANDLE c_LoadImage :: HINSTANCE -> LPCTSTR -> ResourceImageType -> ResourceSize -> ResourceSize -> LoadImageFlags -> IO HANDLE loadResource :: HMODULE -> HRSRC -> IO HGLOBAL c_LoadResource :: HMODULE -> HRSRC -> IO HGLOBAL lockResource :: HGLOBAL -> IO Addr c_LockResource :: HGLOBAL -> IO Addr sizeofResource :: HMODULE -> HRSRC -> IO DWORD c_SizeofResource :: HMODULE -> HRSRC -> IO DWORD updateResource :: HANDLE -> ResourceType -> String -> WORD -> Addr -> DWORD -> IO () c_UpdateResource :: HANDLE -> LPCTSTR -> LPCTSTR -> WORD -> Addr -> DWORD -> IO Bool -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Message type WindowMessage = DWORD wM_COMPACTING :: WindowMessage wM_WININICHANGE :: WindowMessage wM_SYSCOLORCHANGE :: WindowMessage wM_QUERYNEWPALETTE :: WindowMessage wM_PALETTEISCHANGING :: WindowMessage wM_PALETTECHANGED :: WindowMessage wM_FONTCHANGE :: WindowMessage wM_SPOOLERSTATUS :: WindowMessage wM_DEVMODECHANGE :: WindowMessage wM_TIMECHANGE :: WindowMessage wM_POWER :: WindowMessage wM_QUERYENDSESSION :: WindowMessage wM_ENDSESSION :: WindowMessage wM_QUIT :: WindowMessage wM_CREATE :: WindowMessage wM_NCCREATE :: WindowMessage wM_DESTROY :: WindowMessage wM_NCDESTROY :: WindowMessage wM_SHOWWINDOW :: WindowMessage wM_SETREDRAW :: WindowMessage wM_ENABLE :: WindowMessage wM_SETTEXT :: WindowMessage wM_GETTEXT :: WindowMessage wM_GETTEXTLENGTH :: WindowMessage wM_WINDOWPOSCHANGING :: WindowMessage wM_WINDOWPOSCHANGED :: WindowMessage wM_MOVE :: WindowMessage wM_SIZE :: WindowMessage wM_QUERYOPEN :: WindowMessage wM_CLOSE :: WindowMessage wM_GETMINMAXINFO :: WindowMessage wM_PAINT :: WindowMessage wM_ERASEBKGND :: WindowMessage wM_ICONERASEBKGND :: WindowMessage wM_NCPAINT :: WindowMessage wM_NCCALCSIZE :: WindowMessage wM_QUERYDRAGICON :: WindowMessage wM_DROPFILES :: WindowMessage wM_ACTIVATE :: WindowMessage wM_ACTIVATEAPP :: WindowMessage wM_NCACTIVATE :: WindowMessage wM_SETFOCUS :: WindowMessage wM_KILLFOCUS :: WindowMessage wM_KEYDOWN :: WindowMessage wM_KEYUP :: WindowMessage wM_CHAR :: WindowMessage wM_DEADCHAR :: WindowMessage wM_SYSKEYDOWN :: WindowMessage wM_SYSKEYUP :: WindowMessage wM_SYSCHAR :: WindowMessage wM_SYSDEADCHAR :: WindowMessage wM_KEYFIRST :: WindowMessage wM_KEYLAST :: WindowMessage wM_MOUSEMOVE :: WindowMessage wM_LBUTTONDOWN :: WindowMessage wM_LBUTTONUP :: WindowMessage wM_LBUTTONDBLCLK :: WindowMessage wM_RBUTTONDOWN :: WindowMessage wM_RBUTTONUP :: WindowMessage wM_RBUTTONDBLCLK :: WindowMessage wM_MBUTTONDOWN :: WindowMessage wM_MBUTTONUP :: WindowMessage wM_MBUTTONDBLCLK :: WindowMessage wM_MOUSEFIRST :: WindowMessage wM_MOUSELAST :: WindowMessage wM_NCMOUSEMOVE :: WindowMessage wM_NCLBUTTONDOWN :: WindowMessage wM_NCLBUTTONUP :: WindowMessage wM_NCLBUTTONDBLCLK :: WindowMessage wM_NCRBUTTONDOWN :: WindowMessage wM_NCRBUTTONUP :: WindowMessage wM_NCRBUTTONDBLCLK :: WindowMessage wM_NCMBUTTONDOWN :: WindowMessage wM_NCMBUTTONUP :: WindowMessage wM_NCMBUTTONDBLCLK :: WindowMessage wM_MOUSEACTIVATE :: WindowMessage wM_CANCELMODE :: WindowMessage wM_TIMER :: WindowMessage wM_INITMENU :: WindowMessage wM_INITMENUPOPUP :: WindowMessage wM_MENUSELECT :: WindowMessage wM_MENUCHAR :: WindowMessage wM_COMMAND :: WindowMessage wM_HSCROLL :: WindowMessage wM_VSCROLL :: WindowMessage wM_CUT :: WindowMessage wM_COPY :: WindowMessage wM_PASTE :: WindowMessage wM_CLEAR :: WindowMessage wM_UNDO :: WindowMessage wM_RENDERFORMAT :: WindowMessage wM_RENDERALLFORMATS :: WindowMessage wM_DESTROYCLIPBOARD :: WindowMessage wM_DRAWCLIPBOARD :: WindowMessage wM_PAINTCLIPBOARD :: WindowMessage wM_SIZECLIPBOARD :: WindowMessage wM_VSCROLLCLIPBOARD :: WindowMessage wM_HSCROLLCLIPBOARD :: WindowMessage wM_ASKCBFORMATNAME :: WindowMessage wM_CHANGECBCHAIN :: WindowMessage wM_SETCURSOR :: WindowMessage wM_SYSCOMMAND :: WindowMessage wM_MDICREATE :: WindowMessage wM_MDIDESTROY :: WindowMessage wM_MDIACTIVATE :: WindowMessage wM_MDIRESTORE :: WindowMessage wM_MDINEXT :: WindowMessage wM_MDIMAXIMIZE :: WindowMessage wM_MDITILE :: WindowMessage wM_MDICASCADE :: WindowMessage wM_MDIICONARRANGE :: WindowMessage wM_MDIGETACTIVE :: WindowMessage wM_MDISETMENU :: WindowMessage wM_CHILDACTIVATE :: WindowMessage wM_INITDIALOG :: WindowMessage wM_NEXTDLGCTL :: WindowMessage wM_PARENTNOTIFY :: WindowMessage wM_ENTERIDLE :: WindowMessage wM_GETDLGCODE :: WindowMessage wM_SETFONT :: WindowMessage wM_GETFONT :: WindowMessage wM_DRAWITEM :: WindowMessage wM_MEASUREITEM :: WindowMessage wM_DELETEITEM :: WindowMessage wM_COMPAREITEM :: WindowMessage wM_VKEYTOITEM :: WindowMessage wM_CHARTOITEM :: WindowMessage wM_QUEUESYNC :: WindowMessage wM_USER :: WindowMessage wM_APP :: WindowMessage wM_SETICON :: 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 iCON_SMALL :: WPARAM iCON_BIG :: WPARAM -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.GDI.Types type POINT = (LONG, LONG) sizeofPOINT :: Int allocaPOINT :: (Ptr POINT -> IO a) -> IO a peekPOINT :: Ptr POINT -> IO POINT pokePOINT :: Ptr POINT -> POINT -> IO () withPOINT :: POINT -> (Ptr POINT -> IO a) -> IO a type RECT = (LONG, LONG, LONG, LONG) allocaRECT :: (Ptr RECT -> IO a) -> IO a peekRECT :: Ptr RECT -> IO RECT pokeRECT :: Ptr RECT -> RECT -> IO () type SIZE = (LONG, LONG) allocaSIZE :: (Ptr SIZE -> IO a) -> IO a peekSIZE :: Ptr SIZE -> IO SIZE pokeSIZE :: Ptr SIZE -> SIZE -> IO () withPOINTArray :: [POINT] -> (Ptr POINT -> Int -> IO a) -> IO a pokePOINTArray :: Ptr POINT -> [POINT] -> IO () setPOINT :: Ptr POINT -> Int -> POINT -> IO () type LPRECT = Ptr RECT type MbLPRECT = Maybe LPRECT withRECT :: RECT -> (Ptr RECT -> IO a) -> IO a getRECT :: LPRECT -> IO RECT type HBITMAP = HANDLE type MbHBITMAP = Maybe HBITMAP type HFONT = HANDLE type MbHFONT = Maybe HFONT type HCURSOR = HICON type MbHCURSOR = Maybe HCURSOR type HICON = HANDLE type MbHICON = Maybe HICON type HRGN = ForeignHANDLE type PRGN = HANDLE type MbHRGN = Maybe HRGN type HPALETTE = HANDLE type MbHPALETTE = Maybe HPALETTE type HBRUSH = HANDLE type MbHBRUSH = Maybe HBRUSH type HPEN = HANDLE type MbHPEN = Maybe HPEN type HACCEL = HANDLE type HDC = HANDLE type MbHDC = Maybe HDC type HDWP = HANDLE type MbHDWP = Maybe HDWP type HWND = HANDLE type MbHWND = Maybe HWND hWND_BOTTOM :: HWND hWND_NOTOPMOST :: HWND hWND_TOP :: HWND hWND_TOPMOST :: HWND type HMENU = HANDLE type MbHMENU = Maybe HMENU type COLORREF = Word32 rgb :: BYTE -> BYTE -> BYTE -> COLORREF getRValue :: COLORREF -> BYTE getGValue :: COLORREF -> BYTE getBValue :: COLORREF -> BYTE pALETTERGB :: BYTE -> BYTE -> BYTE -> COLORREF pALETTEINDEX :: WORD -> COLORREF type RasterOp3 = Word32 type RasterOp4 = Word32 mAKEROP4 :: RasterOp3 -> RasterOp3 -> RasterOp4 type PolyFillMode = INT aLTERNATE :: PolyFillMode wINDING :: PolyFillMode type ArcDirection = INT type MbArcDirection = Maybe ArcDirection aD_COUNTERCLOCKWISE :: ArcDirection aD_CLOCKWISE :: ArcDirection type GraphicsMode = DWORD type MbGraphicsMode = Maybe GraphicsMode gM_COMPATIBLE :: GraphicsMode gM_ADVANCED :: GraphicsMode type BackgroundMode = INT tRANSPARENT :: BackgroundMode oPAQUE :: BackgroundMode type HatchStyle = INT hS_HORIZONTAL :: HatchStyle hS_VERTICAL :: HatchStyle hS_FDIAGONAL :: HatchStyle hS_BDIAGONAL :: HatchStyle hS_CROSS :: HatchStyle hS_DIAGCROSS :: HatchStyle type StretchBltMode = INT bLACKONWHITE :: StretchBltMode wHITEONBLACK :: StretchBltMode cOLORONCOLOR :: StretchBltMode hALFTONE :: StretchBltMode sTRETCH_ANDSCANS :: StretchBltMode sTRETCH_ORSCANS :: StretchBltMode type TextAlignment = UINT sTRETCH_DELETESCANS :: StretchBltMode tA_NOUPDATECP :: TextAlignment tA_UPDATECP :: TextAlignment tA_LEFT :: TextAlignment tA_RIGHT :: TextAlignment tA_CENTER :: TextAlignment tA_TOP :: TextAlignment tA_BOTTOM :: TextAlignment type ClippingMode = INT rGN_AND :: ClippingMode tA_BASELINE :: TextAlignment rGN_OR :: ClippingMode rGN_XOR :: ClippingMode rGN_DIFF :: ClippingMode rGN_COPY :: ClippingMode type RegionType = INT eRROR :: RegionType nULLREGION :: RegionType sIMPLEREGION :: RegionType cOMPLEXREGION :: RegionType gDI_ERROR :: Num a => a cLR_INVALID :: COLORREF oBJ_PEN :: UINT oBJ_BRUSH :: UINT oBJ_DC :: UINT oBJ_METADC :: UINT oBJ_PAL :: UINT oBJ_FONT :: UINT oBJ_BITMAP :: UINT oBJ_REGION :: UINT oBJ_METAFILE :: UINT oBJ_MEMDC :: UINT oBJ_EXTPEN :: UINT oBJ_ENHMETADC :: UINT prim_ChildWindowFromPoint :: HWND -> Ptr POINT -> IO HWND oBJ_ENHMETAFILE :: UINT prim_ChildWindowFromPointEx :: HWND -> Ptr POINT -> DWORD -> IO HWND prim_MenuItemFromPoint :: HWND -> HMENU -> Ptr POINT -> IO UINT -- | FFI-bindings to interact with SimpleMAPI module System.Win32.SimpleMAPI type ULONG = DWORD type LHANDLE = ULONG newtype MapiRecipDesc MapiRecipDesc :: () -> MapiRecipDesc type MapiFlag = ULONG mAPI_LOGON_UI :: MapiFlag mAPI_NEW_SESSION :: MapiFlag mAPI_FORCE_DOWNLOAD :: MapiFlag mAPI_DIALOG :: MapiFlag mAPI_UNREAD_ONLY :: MapiFlag mAPI_LONG_MSGID :: MapiFlag mAPI_GUARANTEE_FIFO :: MapiFlag mAPI_ENVELOPE_ONLY :: MapiFlag mAPI_PEEK :: MapiFlag mAPI_BODY_AS_FILE :: MapiFlag mAPI_SUPPRESS_ATTACH :: MapiFlag mAPI_AB_NOMODIFY :: MapiFlag mAPI_OLE :: MapiFlag mAPI_OLE_STATIC :: MapiFlag mAPI_UNREAD :: MapiFlag mAPI_RECEIPT_REQUESTED :: MapiFlag mAPI_SENT :: MapiFlag mapiErrors :: [(ULONG, String)] mapiErrorString :: ULONG -> String mapiFail :: String -> IO ULONG -> IO ULONG mapiFail_ :: String -> IO ULONG -> IO () type MapiLogonType = ULONG -> LPSTR -> LPSTR -> MapiFlag -> ULONG -> Ptr LHANDLE -> IO ULONG mkMapiLogon :: FunPtr MapiLogonType -> MapiLogonType type MapiLogoffType = LHANDLE -> ULONG -> MapiFlag -> ULONG -> IO ULONG mkMapiLogoff :: FunPtr MapiLogoffType -> MapiLogoffType type MapiResolveNameType = LHANDLE -> ULONG -> LPSTR -> MapiFlag -> ULONG -> Ptr (Ptr MapiRecipDesc) -> IO ULONG mkMapiResolveName :: FunPtr MapiResolveNameType -> MapiResolveNameType type MapiFreeBufferType = Ptr () -> IO ULONG mkMapiFreeBuffer :: FunPtr MapiFreeBufferType -> MapiFreeBufferType type MapiSendMailType = LHANDLE -> ULONG -> Ptr Message -> MapiFlag -> ULONG -> IO ULONG mkMapiSendMail :: FunPtr MapiSendMailType -> MapiSendMailType data MapiFuncs MapiFuncs :: MapiLogonType -> MapiLogoffType -> MapiResolveNameType -> MapiFreeBufferType -> MapiSendMailType -> MapiFuncs [mapifLogon] :: MapiFuncs -> MapiLogonType [mapifLogoff] :: MapiFuncs -> MapiLogoffType [mapifResolveName] :: MapiFuncs -> MapiResolveNameType [mapifFreeBuffer] :: MapiFuncs -> MapiFreeBufferType [mapifSendMail] :: MapiFuncs -> MapiSendMailType type MapiLoaded = (MapiFuncs, ForeignPtr ()) loadMapiFuncs :: String -> HMODULE -> IO MapiFuncs loadMapiDll :: String -> IO (MapiFuncs, HMODULE) withMapiFuncs :: [String] -> (MapiFuncs -> IO a) -> IO a loadMapi :: [String] -> IO MapiLoaded c_FreeLibraryFinaliser :: FunPtr (HMODULE -> IO ()) withMapiLoaded :: MapiLoaded -> (MapiFuncs -> IO a) -> IO a maybeHWND :: Maybe HWND -> ULONG -- | Create Simple MAPI-session by logon mapiLogon :: MapiFuncs -> Maybe HWND -> Maybe String -> Maybe String -> MapiFlag -> IO LHANDLE -- | End Simple MAPI-session mapiLogoff :: MapiFuncs -> LHANDLE -> Maybe HWND -> IO () data RecipientClass RcOriginal :: RecipientClass RcTo :: RecipientClass RcCc :: RecipientClass RcBcc :: RecipientClass rcToULONG :: RecipientClass -> ULONG uLONGToRc :: ULONG -> RecipientClass data Recipient RecipResolve :: Maybe HWND -> MapiFlag -> String -> Maybe Recipient -> Recipient Recip :: String -> String -> Recipient type Recipients = [(RecipientClass, Recipient)] simpleRecip :: String -> Recipient withRecipient :: MapiFuncs -> LHANDLE -> RecipientClass -> Recipient -> (Ptr MapiRecipDesc -> IO a) -> IO a withRecipients :: MapiFuncs -> LHANDLE -> Recipients -> (Int -> Ptr MapiRecipDesc -> IO a) -> IO a data FileTag FileTag :: Maybe String -> Maybe String -> FileTag -- | mime [ftTag] :: FileTag -> Maybe String [ftEncoding] :: FileTag -> Maybe String defFileTag :: FileTag withFileTag :: FileTag -> (Ptr FileTag -> IO a) -> IO a data Attachment Attachment :: MapiFlag -> Maybe ULONG -> String -> Maybe String -> Maybe FileTag -> Attachment [attFlag] :: Attachment -> MapiFlag [attPosition] :: Attachment -> Maybe ULONG [attPath] :: Attachment -> String [attName] :: Attachment -> Maybe String [attTag] :: Attachment -> Maybe FileTag defAttachment :: Attachment type Attachments = [Attachment] withAttachments :: Attachments -> (Int -> Ptr Attachment -> IO a) -> IO a data Message Message :: String -> String -> Maybe String -> Maybe String -> Maybe String -> MapiFlag -> Maybe Recipient -> Recipients -> Attachments -> Message [msgSubject] :: Message -> String [msgBody] :: Message -> String [msgType] :: Message -> Maybe String [msgDate] :: Message -> Maybe String [msgConversationId] :: Message -> Maybe String [msgFlags] :: Message -> MapiFlag [msgFrom] :: Message -> Maybe Recipient [msgRecips] :: Message -> Recipients [msgAttachments] :: Message -> Attachments defMessage :: Message withMessage :: MapiFuncs -> LHANDLE -> Message -> (Ptr Message -> IO a) -> IO a mapiSendMail :: MapiFuncs -> LHANDLE -> Maybe HWND -> Message -> MapiFlag -> IO () handleIOException :: (IOException -> IO a) -> IO a -> IO a instance GHC.Enum.Enum System.Win32.SimpleMAPI.RecipientClass instance GHC.Classes.Ord System.Win32.SimpleMAPI.RecipientClass instance GHC.Classes.Eq System.Win32.SimpleMAPI.RecipientClass instance GHC.Show.Show System.Win32.SimpleMAPI.RecipientClass instance GHC.Show.Show System.Win32.SimpleMAPI.Recipient instance GHC.Show.Show System.Win32.SimpleMAPI.FileTag instance GHC.Show.Show System.Win32.SimpleMAPI.Attachment instance GHC.Show.Show System.Win32.SimpleMAPI.Message -- | Win32 stuff from shell32.dll module System.Win32.Shell sHGetFolderPath :: HWND -> CSIDL -> HANDLE -> SHGetFolderPathFlags -> IO String type CSIDL = CInt cSIDL_PROFILE :: CSIDL cSIDL_APPDATA :: CSIDL cSIDL_WINDOWS :: CSIDL cSIDL_PERSONAL :: CSIDL cSIDL_LOCAL_APPDATA :: CSIDL cSIDL_DESKTOPDIRECTORY :: CSIDL cSIDL_PROGRAM_FILES :: CSIDL type SHGetFolderPathFlags = DWORD sHGFP_TYPE_CURRENT :: SHGetFolderPathFlags sHGFP_TYPE_DEFAULT :: SHGetFolderPathFlags -- | Provide PostMessage function and friends. module Graphics.Win32.Window.PostMessage postMessage :: MbHWND -> WindowMessage -> WPARAM -> LPARAM -> IO () c_PostMessage :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO BOOL postQuitMessage :: Int -> IO () postThreadMessage :: DWORD -> WindowMessage -> WPARAM -> LPARAM -> IO () c_PostThreadMessage :: DWORD -> WindowMessage -> WPARAM -> LPARAM -> IO BOOL hWND_BROADCAST :: HWND inSendMessage :: IO Bool -- | Provide AnimatedWindow function and flags. module Graphics.Win32.Window.AnimateWindow type AnimateWindowType = DWORD aW_SLIDE :: AnimateWindowType aW_ACTIVATE :: AnimateWindowType aW_BLEND :: AnimateWindowType aW_HIDE :: AnimateWindowType aW_CENTER :: AnimateWindowType aW_HOR_POSITIVE :: AnimateWindowType aW_HOR_NEGATIVE :: AnimateWindowType aW_VER_POSITIVE :: AnimateWindowType aW_VER_NEGATIVE :: AnimateWindowType animateWindow :: HWND -> DWORD -> AnimateWindowType -> IO () c_AnimateWindow :: HWND -> DWORD -> AnimateWindowType -> IO BOOL -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Window type ClassName = LPCTSTR mkClassName :: String -> ClassName type ClassStyle = UINT cS_VREDRAW :: ClassStyle cS_HREDRAW :: ClassStyle cS_OWNDC :: ClassStyle cS_CLASSDC :: ClassStyle cS_PARENTDC :: ClassStyle cS_SAVEBITS :: ClassStyle cS_DBLCLKS :: ClassStyle cS_BYTEALIGNCLIENT :: ClassStyle cS_BYTEALIGNWINDOW :: ClassStyle cS_NOCLOSE :: ClassStyle cS_GLOBALCLASS :: ClassStyle type WNDCLASS = (ClassStyle, HINSTANCE, Maybe HICON, Maybe HCURSOR, Maybe HBRUSH, Maybe LPCTSTR, ClassName) withWNDCLASS :: WNDCLASS -> (Ptr WNDCLASS -> IO a) -> IO a genericWndProc_p :: FunPtr WindowClosure registerClass :: WNDCLASS -> IO (Maybe ATOM) c_RegisterClass :: Ptr WNDCLASS -> IO ATOM unregisterClass :: ClassName -> HINSTANCE -> IO () type WindowStyle = DWORD wS_OVERLAPPED :: WindowStyle wS_POPUP :: WindowStyle wS_CHILD :: WindowStyle wS_CLIPSIBLINGS :: WindowStyle wS_CLIPCHILDREN :: WindowStyle wS_VISIBLE :: WindowStyle wS_DISABLED :: WindowStyle wS_MINIMIZE :: WindowStyle wS_MAXIMIZE :: WindowStyle wS_CAPTION :: WindowStyle wS_BORDER :: WindowStyle wS_DLGFRAME :: WindowStyle wS_VSCROLL :: WindowStyle wS_HSCROLL :: WindowStyle wS_SYSMENU :: WindowStyle type WindowStyleEx = DWORD wS_THICKFRAME :: WindowStyle wS_MINIMIZEBOX :: WindowStyle wS_EX_DLGMODALFRAME :: WindowStyleEx wS_MAXIMIZEBOX :: WindowStyle wS_EX_NOPARENTNOTIFY :: WindowStyleEx wS_GROUP :: WindowStyle wS_EX_TOPMOST :: WindowStyleEx wS_TABSTOP :: WindowStyle wS_EX_ACCEPTFILES :: WindowStyleEx wS_OVERLAPPEDWINDOW :: WindowStyle wS_EX_TRANSPARENT :: WindowStyleEx wS_POPUPWINDOW :: WindowStyle wS_EX_MDICHILD :: WindowStyleEx wS_CHILDWINDOW :: WindowStyle wS_EX_TOOLWINDOW :: WindowStyleEx wS_TILED :: WindowStyle wS_EX_WINDOWEDGE :: WindowStyleEx wS_ICONIC :: WindowStyle wS_EX_CLIENTEDGE :: WindowStyleEx wS_SIZEBOX :: WindowStyle wS_EX_CONTEXTHELP :: WindowStyleEx wS_TILEDWINDOW :: WindowStyle wS_EX_RIGHT :: WindowStyleEx wS_EX_LEFT :: WindowStyleEx wS_EX_RTLREADING :: WindowStyleEx cW_USEDEFAULT :: Pos wS_EX_LTRREADING :: WindowStyleEx wS_EX_LEFTSCROLLBAR :: WindowStyleEx wS_EX_RIGHTSCROLLBAR :: WindowStyleEx type Pos = Int wS_EX_CONTROLPARENT :: WindowStyleEx type MbPos = Maybe Pos wS_EX_STATICEDGE :: WindowStyleEx maybePos :: Maybe Pos -> Pos wS_EX_APPWINDOW :: WindowStyleEx wS_EX_OVERLAPPEDWINDOW :: WindowStyleEx type WindowClosure = HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT wS_EX_PALETTEWINDOW :: WindowStyleEx mkWindowClosure :: WindowClosure -> IO (FunPtr WindowClosure) mkCIntPtr :: FunPtr a -> CIntPtr -- | The standard C wndproc for every window class registered by -- registerClass is a C function pointer provided with this -- library. It in turn delegates to a Haskell function pointer stored in -- gWLP_USERDATA. This action creates that function pointer. All -- Haskell function pointers must be freed in order to allow the objects -- they close over to be garbage collected. Consequently, if you are -- replacing a window closure previously set via this method or -- indirectly with createWindow or createWindowEx you must -- free it. This action returns a function pointer to the old window -- closure for you to free. The current window closure is freed -- automatically by defWindowProc when it receives -- wM_NCDESTROY. setWindowClosure :: HWND -> WindowClosure -> IO (Maybe (FunPtr WindowClosure)) c_SetWindowLongPtr :: HWND -> INT -> LONG_PTR -> IO LONG_PTR c_GetWindowLongPtr :: HANDLE -> INT -> IO LONG_PTR -- | Creates a window with a default extended window style. If you create -- many windows over the life of your program, WindowClosure may leak -- memory. Be sure to delegate to defWindowProc for -- wM_NCDESTROY and see defWindowProc and -- setWindowClosure for details. createWindow :: ClassName -> String -> WindowStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HINSTANCE -> WindowClosure -> IO HWND -- | Creates a window and allows your to specify the extended window style. -- If you create many windows over the life of your program, -- WindowClosure may leak memory. Be sure to delegate to -- defWindowProc for wM_NCDESTROY and see -- defWindowProc and setWindowClosure for details. createWindowEx :: WindowStyle -> ClassName -> String -> WindowStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HINSTANCE -> WindowClosure -> IO HWND c_CreateWindowEx :: WindowStyle -> ClassName -> LPCTSTR -> WindowStyle -> Pos -> Pos -> Pos -> Pos -> HWND -> HMENU -> HINSTANCE -> LPVOID -> IO HWND -- | Delegates to the Win32 default window procedure. If you are using a -- window created by createWindow, createWindowEx or on -- which you have called setWindowClosure, please note that the -- window will leak memory once it is destroyed unless you call -- freeWindowProc when it receives wM_NCDESTROY. If you -- wish to do this, instead of using this function directly, you can -- delegate to defWindowProcSafe which will handle it for you. As -- an alternative, you can manually retrieve the window closure function -- pointer and free it after the window has been destroyed. Check the -- implementation of freeWindowProc for a guide. defWindowProc :: Maybe HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT -- | Delegates to the standard default window procedure, but if it receives -- the wM_NCDESTROY message it first frees the window closure to -- allow the closure and any objects it closes over to be garbage -- collected. wM_NCDESTROY is the last message a window receives -- prior to being deleted. defWindowProcSafe :: Maybe HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT c_DefWindowProc :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT -- | Frees a function pointer to the window closure which has been set -- directly by setWindowClosure or indirectly by -- createWindowEx. You should call this function in your window -- closure's wM_NCDESTROY case unless you delegate that case to -- defWindowProc (e.g. as part of the default). freeWindowProc :: HWND -> IO () getClientRect :: HWND -> IO RECT c_GetClientRect :: HWND -> Ptr RECT -> IO Bool getWindowRect :: HWND -> IO RECT c_GetWindowRect :: HWND -> Ptr RECT -> IO Bool invalidateRect :: Maybe HWND -> Maybe LPRECT -> Bool -> IO () c_InvalidateRect :: HWND -> LPRECT -> Bool -> IO Bool screenToClient :: HWND -> POINT -> IO POINT c_ScreenToClient :: HWND -> Ptr POINT -> IO Bool clientToScreen :: HWND -> POINT -> IO POINT c_ClientToScreen :: HWND -> Ptr POINT -> IO Bool setWindowText :: HWND -> String -> IO () c_SetWindowText :: HWND -> LPCTSTR -> IO Bool getWindowText :: HWND -> Int -> IO String c_GetWindowText :: HWND -> LPTSTR -> Int -> IO Int getWindowTextLength :: HWND -> IO Int c_GetWindowTextLength :: HWND -> IO Int type PAINTSTRUCT = (HDC, Bool, RECT) type LPPAINTSTRUCT = Addr sizeofPAINTSTRUCT :: DWORD allocaPAINTSTRUCT :: (LPPAINTSTRUCT -> IO a) -> IO a beginPaint :: HWND -> LPPAINTSTRUCT -> IO HDC c_BeginPaint :: HWND -> LPPAINTSTRUCT -> IO HDC endPaint :: HWND -> LPPAINTSTRUCT -> IO () type ShowWindowControl = DWORD sW_HIDE :: ShowWindowControl sW_SHOWNORMAL :: ShowWindowControl sW_SHOWMINIMIZED :: ShowWindowControl sW_SHOWMAXIMIZED :: ShowWindowControl sW_MAXIMIZE :: ShowWindowControl sW_SHOWNOACTIVATE :: ShowWindowControl sW_SHOW :: ShowWindowControl sW_MINIMIZE :: ShowWindowControl showWindow :: HWND -> ShowWindowControl -> IO Bool sW_SHOWMINNOACTIVE :: ShowWindowControl isWindowVisible :: HWND -> IO Bool sW_SHOWNA :: ShowWindowControl sW_RESTORE :: ShowWindowControl adjustWindowRect :: RECT -> WindowStyle -> Bool -> IO RECT c_AdjustWindowRect :: Ptr RECT -> WindowStyle -> Bool -> IO Bool adjustWindowRectEx :: RECT -> WindowStyle -> Bool -> WindowStyleEx -> IO RECT c_AdjustWindowRectEx :: Ptr RECT -> WindowStyle -> Bool -> WindowStyleEx -> IO Bool anyPopup :: IO Bool arrangeIconicWindows :: HWND -> IO () c_ArrangeIconicWindows :: HWND -> IO Bool beginDeferWindowPos :: Int -> IO HDWP c_BeginDeferWindowPos :: Int -> IO HDWP bringWindowToTop :: HWND -> IO () c_BringWindowToTop :: HWND -> IO Bool childWindowFromPoint :: HWND -> POINT -> IO (Maybe HWND) childWindowFromPointEx :: HWND -> POINT -> DWORD -> IO (Maybe HWND) closeWindow :: HWND -> IO () deferWindowPos :: HDWP -> HWND -> HWND -> Int -> Int -> Int -> Int -> SetWindowPosFlags -> IO HDWP c_DeferWindowPos :: HDWP -> HWND -> HWND -> Int -> Int -> Int -> Int -> SetWindowPosFlags -> IO HDWP destroyWindow :: HWND -> IO () c_DestroyWindow :: HWND -> IO Bool endDeferWindowPos :: HDWP -> IO () c_EndDeferWindowPos :: HDWP -> IO Bool findWindow :: Maybe String -> Maybe String -> IO (Maybe HWND) -- | Deprecated: Use 'findWindow Nothing' instead. findWindowByName :: String -> IO (Maybe HWND) c_FindWindow :: LPCTSTR -> LPCTSTR -> IO HWND findWindowEx :: Maybe HWND -> Maybe HWND -> Maybe String -> Maybe String -> IO (Maybe HWND) c_FindWindowEx :: HWND -> HWND -> LPCTSTR -> LPCTSTR -> IO HWND flashWindow :: HWND -> Bool -> IO Bool moveWindow :: HWND -> Int -> Int -> Int -> Int -> Bool -> IO () c_MoveWindow :: HWND -> Int -> Int -> Int -> Int -> Bool -> IO Bool getDesktopWindow :: IO HWND getForegroundWindow :: IO HWND getParent :: HWND -> IO HWND c_GetParent :: HWND -> IO HWND getTopWindow :: HWND -> IO HWND c_GetTopWindow :: HWND -> IO HWND type SetWindowPosFlags = UINT sWP_NOSIZE :: SetWindowPosFlags sWP_NOMOVE :: SetWindowPosFlags sWP_NOZORDER :: SetWindowPosFlags sWP_NOREDRAW :: SetWindowPosFlags sWP_NOACTIVATE :: SetWindowPosFlags sWP_FRAMECHANGED :: SetWindowPosFlags sWP_SHOWWINDOW :: SetWindowPosFlags sWP_HIDEWINDOW :: SetWindowPosFlags sWP_NOCOPYBITS :: SetWindowPosFlags sWP_NOOWNERZORDER :: SetWindowPosFlags type GetDCExFlags = DWORD sWP_NOSENDCHANGING :: SetWindowPosFlags dCX_WINDOW :: GetDCExFlags sWP_DRAWFRAME :: SetWindowPosFlags dCX_CACHE :: GetDCExFlags sWP_NOREPOSITION :: SetWindowPosFlags dCX_CLIPCHILDREN :: GetDCExFlags dCX_CLIPSIBLINGS :: GetDCExFlags dCX_PARENTCLIP :: GetDCExFlags dCX_EXCLUDERGN :: GetDCExFlags dCX_INTERSECTRGN :: GetDCExFlags getDCEx :: HWND -> HRGN -> GetDCExFlags -> IO HDC dCX_LOCKWINDOWUPDATE :: GetDCExFlags c_GetDCEx :: HWND -> PRGN -> GetDCExFlags -> IO HDC getDC :: Maybe HWND -> IO HDC c_GetDC :: HWND -> IO HDC getWindowDC :: Maybe HWND -> IO HDC c_GetWindowDC :: HWND -> IO HDC releaseDC :: Maybe HWND -> HDC -> IO () c_ReleaseDC :: HWND -> HDC -> IO Bool getDCOrgEx :: HDC -> IO POINT c_GetDCOrgEx :: HDC -> Ptr POINT -> IO Bool hideCaret :: HWND -> IO () c_HideCaret :: HWND -> IO Bool showCaret :: HWND -> IO () c_ShowCaret :: HWND -> IO Bool createCaret :: HWND -> HBITMAP -> Maybe INT -> Maybe INT -> IO () c_CreateCaret :: HWND -> HBITMAP -> INT -> INT -> IO Bool destroyCaret :: IO () c_DestroyCaret :: IO Bool getCaretPos :: IO POINT c_GetCaretPos :: Ptr POINT -> IO Bool setCaretPos :: POINT -> IO () c_SetCaretPos :: LONG -> LONG -> IO Bool type LPMSG = Addr allocaMessage :: (LPMSG -> IO a) -> IO a getMessage :: LPMSG -> Maybe HWND -> IO Bool c_GetMessage :: LPMSG -> HWND -> UINT -> UINT -> IO LONG peekMessage :: LPMSG -> Maybe HWND -> UINT -> UINT -> UINT -> IO () c_PeekMessage :: LPMSG -> HWND -> UINT -> UINT -> UINT -> IO LONG translateMessage :: LPMSG -> IO BOOL updateWindow :: HWND -> IO () c_UpdateWindow :: HWND -> IO Bool dispatchMessage :: LPMSG -> IO LONG sendMessage :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Misc type Accelerator = LPCTSTR type Cursor = LPTSTR type Icon = LPTSTR loadAccelerators :: Maybe HINSTANCE -> Accelerator -> IO HACCEL c_LoadAccelerators :: HINSTANCE -> Accelerator -> IO HACCEL loadCursor :: Maybe HINSTANCE -> Cursor -> IO HCURSOR c_LoadCursor :: HINSTANCE -> Cursor -> IO HCURSOR loadIcon :: Maybe HINSTANCE -> Icon -> IO HICON c_LoadIcon :: HINSTANCE -> Icon -> IO HICON iDC_ARROW :: Cursor iDC_IBEAM :: Cursor iDC_WAIT :: Cursor iDC_CROSS :: Cursor iDC_UPARROW :: Cursor iDC_SIZENWSE :: Cursor iDC_SIZENESW :: Cursor iDC_SIZEWE :: Cursor iDC_SIZENS :: Cursor iDI_APPLICATION :: Icon iDI_HAND :: Icon iDI_QUESTION :: Icon iDI_EXCLAMATION :: Icon iDI_ASTERISK :: Icon type MBStyle = UINT mB_OK :: MBStyle mB_OKCANCEL :: MBStyle mB_ABORTRETRYIGNORE :: MBStyle mB_YESNOCANCEL :: MBStyle mB_YESNO :: MBStyle mB_RETRYCANCEL :: MBStyle mB_ICONHAND :: MBStyle mB_ICONQUESTION :: MBStyle mB_ICONEXCLAMATION :: MBStyle mB_ICONASTERISK :: MBStyle mB_ICONINFORMATION :: MBStyle type MBStatus = UINT mB_ICONSTOP :: MBStyle iDABORT :: MBStatus mB_DEFBUTTON1 :: MBStyle iDCANCEL :: MBStatus mB_DEFBUTTON2 :: MBStyle iDIGNORE :: MBStatus mB_DEFBUTTON3 :: MBStyle iDNO :: MBStatus mB_APPLMODAL :: MBStyle iDOK :: MBStatus mB_SYSTEMMODAL :: MBStyle iDRETRY :: MBStatus mB_TASKMODAL :: MBStyle iDYES :: MBStatus mB_SETFOREGROUND :: MBStyle messageBox :: Maybe HWND -> String -> String -> MBStyle -> IO MBStatus c_MessageBox :: HWND -> LPCTSTR -> LPCTSTR -> MBStyle -> IO MBStatus type StdHandleId = DWORD sTD_INPUT_HANDLE :: StdHandleId sTD_OUTPUT_HANDLE :: StdHandleId sTD_ERROR_HANDLE :: StdHandleId getStdHandle :: StdHandleId -> IO HANDLE c_GetStdHandle :: StdHandleId -> IO HANDLE transformedEllipse :: HDC -> POINT -> POINT -> POINT -> IO () c_transformedEllipse :: HDC -> LONG -> LONG -> LONG -> LONG -> LONG -> LONG -> IO Bool getCursorPos :: IO POINT c_GetCursorPos :: Ptr POINT -> IO Bool setCursorPos :: POINT -> IO () c_SetCursorPos :: LONG -> LONG -> IO Bool clipCursor :: RECT -> IO () c_ClipCursor :: Ptr RECT -> IO Bool getClipCursor :: IO RECT c_GetClipCursor :: Ptr RECT -> IO Bool type ExitOption = UINT eWX_FORCE :: ExitOption eWX_LOGOFF :: ExitOption eWX_POWEROFF :: ExitOption eWX_REBOOT :: ExitOption eWX_SHUTDOWN :: ExitOption exitWindowsEx :: ExitOption -> IO () c_ExitWindowsEx :: ExitOption -> DWORD -> IO Bool exitWindows :: IO () type Beep = UINT type MbBeep = Maybe Beep maybeBeep :: Maybe Beep -> Beep type Duration = Int type MbDuration = Maybe Duration maybeDuration :: Maybe Duration -> Duration messageBeep :: Maybe Beep -> IO () c_MessageBeep :: Beep -> IO () beep :: WORD -> MbDuration -> IO () c_Beep :: WORD -> Duration -> IO Bool type TimerId = UINT type TIMERPROC = FunPtr (HWND -> UINT -> TimerId -> DWORD -> IO ()) setWinTimer :: HWND -> TimerId -> UINT -> IO TimerId c_SetTimer :: HWND -> TimerId -> UINT -> TIMERPROC -> IO TimerId killTimer :: Maybe HWND -> TimerId -> IO () c_KillTimer :: HWND -> TimerId -> IO Bool type MilliSeconds = DWORD timeGetTime :: IO MilliSeconds -- | A collection of FFI declarations for interfacing with Win32 Console -- API module System.Win32.Console getConsoleMode :: HANDLE -> IO DWORD setConsoleMode :: HANDLE -> DWORD -> IO () eNABLE_ECHO_INPUT :: DWORD eNABLE_EXTENDED_FLAGS :: DWORD eNABLE_INSERT_MODE :: DWORD eNABLE_LINE_INPUT :: DWORD eNABLE_MOUSE_INPUT :: DWORD eNABLE_PROCESSED_INPUT :: DWORD eNABLE_QUICK_EDIT_MODE :: DWORD eNABLE_WINDOW_INPUT :: DWORD eNABLE_VIRTUAL_TERMINAL_INPUT :: DWORD eNABLE_PROCESSED_OUTPUT :: DWORD eNABLE_WRAP_AT_EOL_OUTPUT :: DWORD eNABLE_VIRTUAL_TERMINAL_PROCESSING :: DWORD dISABLE_NEWLINE_AUTO_RETURN :: DWORD eNABLE_LVB_GRID_WORLDWIDE :: DWORD getConsoleCP :: IO UINT setConsoleCP :: UINT -> IO () getConsoleOutputCP :: IO UINT setConsoleOutputCP :: UINT -> IO () type CtrlEvent = DWORD cTRL_C_EVENT :: CtrlEvent cTRL_BREAK_EVENT :: CtrlEvent generateConsoleCtrlEvent :: CtrlEvent -> DWORD -> IO () -- | This function can be used to parse command line arguments and return -- the split up arguments as elements in a list. commandLineToArgv :: String -> IO [String] getCommandLineW :: IO LPWSTR -- | Based on GetCommandLineW. This behaves slightly different -- than getArgs. See the online documentation: -- https://learn.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinew getArgs :: IO [String] data CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO :: COORD -> COORD -> WORD -> SMALL_RECT -> COORD -> CONSOLE_SCREEN_BUFFER_INFO [dwSize] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD [dwCursorPosition] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD [wAttributes] :: CONSOLE_SCREEN_BUFFER_INFO -> WORD [srWindow] :: CONSOLE_SCREEN_BUFFER_INFO -> SMALL_RECT [dwMaximumWindowSize] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD data CONSOLE_SCREEN_BUFFER_INFOEX CONSOLE_SCREEN_BUFFER_INFOEX :: COORD -> COORD -> WORD -> SMALL_RECT -> COORD -> WORD -> BOOL -> [COLORREF] -> CONSOLE_SCREEN_BUFFER_INFOEX [dwSizeEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> COORD [dwCursorPositionEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> COORD [wAttributesEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> WORD [srWindowEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> SMALL_RECT [dwMaximumWindowSizeEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> COORD [wPopupAttributes] :: CONSOLE_SCREEN_BUFFER_INFOEX -> WORD [bFullscreenSupported] :: CONSOLE_SCREEN_BUFFER_INFOEX -> BOOL -- | Only the first 16 COLORREF values passed to the Windows Console -- API. If fewer than 16 values, the remainder are padded with 0 -- when passed to the API. [colorTable] :: CONSOLE_SCREEN_BUFFER_INFOEX -> [COLORREF] data COORD COORD :: SHORT -> SHORT -> COORD [xPos] :: COORD -> SHORT [yPos] :: COORD -> SHORT data SMALL_RECT SMALL_RECT :: SHORT -> SHORT -> SHORT -> SHORT -> SMALL_RECT [leftPos] :: SMALL_RECT -> SHORT [topPos] :: SMALL_RECT -> SHORT [rightPos] :: SMALL_RECT -> SHORT [bottomPos] :: SMALL_RECT -> SHORT type COLORREF = Word32 getConsoleScreenBufferInfo :: HANDLE -> IO CONSOLE_SCREEN_BUFFER_INFO getCurrentConsoleScreenBufferInfo :: IO CONSOLE_SCREEN_BUFFER_INFO getConsoleScreenBufferInfoEx :: HANDLE -> IO CONSOLE_SCREEN_BUFFER_INFOEX getCurrentConsoleScreenBufferInfoEx :: IO CONSOLE_SCREEN_BUFFER_INFOEX getEnv :: String -> IO (Maybe String) getEnvironment :: IO [(String, String)] -- | 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 -- c_SetConsoleCtrlHandler instead. setConsoleCtrlHandler :: PHANDLER_ROUTINE -> BOOL -> IO () c_SetConsoleCtrlHandler :: PHANDLER_ROUTINE -> BOOL -> IO BOOL mkHandler :: Handler -> IO PHANDLER_ROUTINE cTRL_C_EVENT :: CtrlEvent cTRL_BREAK_EVENT :: CtrlEvent -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Menu type MenuName = LPCTSTR checkMenuItem :: HMENU -> MenuItem -> MenuFlag -> IO Bool c_CheckMenuItem :: HMENU -> UINT -> UINT -> IO DWORD checkMenuRadioItem :: HMENU -> MenuItem -> MenuItem -> MenuItem -> MenuFlag -> IO () c_CheckMenuRadioItem :: HMENU -> UINT -> UINT -> UINT -> UINT -> IO Bool createMenu :: IO HMENU c_CreateMenu :: IO HMENU createPopupMenu :: IO HMENU c_CreatePopupMenu :: IO HMENU drawMenuBar :: HWND -> IO () c_DrawMenuBar :: HWND -> IO Bool type MenuState = MenuFlag enableMenuItem :: HMENU -> MenuItem -> MenuFlag -> IO MenuState c_EnableMenuItem :: HMENU -> UINT -> UINT -> IO MenuState type GMDIFlag = UINT type MenuFlag = UINT gMDI_USEDISABLED :: GMDIFlag gMDI_GOINTOPOPUPS :: GMDIFlag mF_BYCOMMAND :: MenuFlag mF_BYPOSITION :: MenuFlag mF_CHECKED :: MenuFlag type MenuItem = UINT mF_INSERT :: MenuItem mF_CHANGE :: MenuItem mF_APPEND :: MenuItem mF_DELETE :: MenuItem mF_REMOVE :: MenuItem mF_USECHECKBITMAPS :: MenuItem mF_POPUP :: MenuItem mFT_STRING :: MenuFlag mF_SYSMENU :: MenuItem mFT_BITMAP :: MenuFlag mF_HELP :: MenuItem mFT_MENUBARBREAK :: MenuFlag mF_MOUSESELECT :: MenuItem mFT_MENUBREAK :: MenuFlag mF_END :: MenuItem mFT_OWNERDRAW :: MenuFlag mFT_RADIOCHECK :: MenuFlag mFT_SEPARATOR :: MenuFlag mFS_GRAYED :: MenuState mFT_RIGHTORDER :: MenuFlag mFS_DISABLED :: MenuState mFT_RIGHTJUSTIFY :: MenuFlag mFS_CHECKED :: MenuState mFS_HILITE :: MenuState mFS_ENABLED :: MenuState mFS_UNCHECKED :: MenuState type TrackMenuFlag = UINT mFS_UNHILITE :: MenuState tPM_LEFTBUTTON :: TrackMenuFlag mFS_DEFAULT :: MenuState tPM_RIGHTBUTTON :: TrackMenuFlag tPM_LEFTALIGN :: TrackMenuFlag tPM_CENTERALIGN :: TrackMenuFlag tPM_RIGHTALIGN :: TrackMenuFlag tPM_TOPALIGN :: TrackMenuFlag tPM_VCENTERALIGN :: TrackMenuFlag tPM_BOTTOMALIGN :: TrackMenuFlag type SystemMenuCommand = UINT tPM_HORIZONTAL :: TrackMenuFlag sC_SIZE :: SystemMenuCommand tPM_VERTICAL :: TrackMenuFlag sC_MOVE :: SystemMenuCommand tPM_NONOTIFY :: TrackMenuFlag sC_MINIMIZE :: SystemMenuCommand tPM_RETURNCMD :: TrackMenuFlag sC_MAXIMIZE :: SystemMenuCommand sC_NEXTWINDOW :: SystemMenuCommand sC_PREVWINDOW :: SystemMenuCommand sC_CLOSE :: SystemMenuCommand sC_VSCROLL :: SystemMenuCommand sC_HSCROLL :: SystemMenuCommand sC_MOUSEMENU :: SystemMenuCommand sC_KEYMENU :: SystemMenuCommand sC_ARRANGE :: SystemMenuCommand isMenu :: HMENU -> IO Bool sC_RESTORE :: SystemMenuCommand getSystemMenu :: HWND -> Bool -> IO (Maybe HMENU) sC_TASKLIST :: SystemMenuCommand sC_SCREENSAVE :: SystemMenuCommand c_GetSystemMenu :: HWND -> Bool -> IO HMENU sC_HOTKEY :: SystemMenuCommand getMenu :: HWND -> IO (Maybe HMENU) sC_DEFAULT :: SystemMenuCommand sC_MONITORPOWER :: SystemMenuCommand c_GetMenu :: HWND -> IO HMENU sC_CONTEXTHELP :: SystemMenuCommand getMenuDefaultItem :: HMENU -> Bool -> GMDIFlag -> IO MenuItem sC_SEPARATOR :: SystemMenuCommand c_GetMenuDefaultItem :: HMENU -> Bool -> UINT -> IO UINT getMenuState :: HMENU -> MenuItem -> MenuFlag -> IO MenuState c_GetMenuState :: HMENU -> UINT -> UINT -> IO MenuState getSubMenu :: HMENU -> MenuItem -> IO (Maybe HMENU) c_GetSubMenu :: HMENU -> UINT -> IO HMENU setMenu :: HWND -> HMENU -> IO () c_SetMenu :: HWND -> HMENU -> IO Bool getMenuItemCount :: HMENU -> IO Int c_GetMenuItemCount :: HMENU -> IO Int type MenuID = UINT getMenuItemID :: HMENU -> MenuItem -> IO MenuID c_GetMenuItemID :: HMENU -> UINT -> IO MenuID data MenuItemInfo MenuItemInfo :: MenuFlag -> MenuState -> UINT -> HMENU -> HBITMAP -> HBITMAP -> DWORD -> String -> MenuItemInfo [menuItemType] :: MenuItemInfo -> MenuFlag [menuItemState] :: MenuItemInfo -> MenuState [menuItemID] :: MenuItemInfo -> UINT [menuItemSubMenu] :: MenuItemInfo -> HMENU [menuItemBitmapChecked] :: MenuItemInfo -> HBITMAP [menuItemBitmapUnchecked] :: MenuItemInfo -> HBITMAP [menuItemData] :: MenuItemInfo -> DWORD [menuItemTypeData] :: MenuItemInfo -> String peekMenuItemInfo :: Ptr MenuItemInfo -> IO MenuItemInfo allocaMenuItemInfo :: (Ptr MenuItemInfo -> IO a) -> IO a withMenuItemInfo :: MenuItemInfo -> (Ptr MenuItemInfo -> IO a) -> IO a type MenuItemMask = UINT mIIM_CHECKMARKS :: MenuItemMask mIIM_DATA :: MenuItemMask mIIM_ID :: MenuItemMask mIIM_STATE :: MenuItemMask mIIM_SUBMENU :: MenuItemMask pokeFMask :: Ptr MenuItemInfo -> MenuItemMask -> IO () mIIM_TYPE :: MenuItemMask getMenuItemInfo :: HMENU -> MenuItem -> Bool -> MenuItemMask -> IO MenuItemInfo c_GetMenuItemInfo :: HMENU -> UINT -> Bool -> Ptr MenuItemInfo -> IO Bool getMenuItemRect :: HWND -> HMENU -> MenuItem -> IO RECT c_GetMenuItemRect :: HWND -> HMENU -> UINT -> LPRECT -> IO Bool hiliteMenuItem :: HWND -> HMENU -> MenuItem -> MenuFlag -> IO Bool insertMenuItem :: HMENU -> MenuItem -> Bool -> MenuItemInfo -> IO () c_InsertMenuItem :: HMENU -> UINT -> Bool -> Ptr MenuItemInfo -> IO Bool type Menu = LPCTSTR loadMenu :: Maybe HINSTANCE -> Menu -> IO HMENU c_LoadMenu :: HINSTANCE -> Menu -> IO HMENU menuItemFromPoint :: HWND -> HMENU -> POINT -> IO UINT setMenuDefaultItem :: HMENU -> MenuItem -> Bool -> IO () c_SetMenuDefaultItem :: HMENU -> MenuItem -> Bool -> IO Bool setMenuItemBitmaps :: HMENU -> MenuItem -> MenuFlag -> HBITMAP -> HBITMAP -> IO () c_SetMenuItemBitmaps :: HMENU -> UINT -> UINT -> HBITMAP -> HBITMAP -> IO Bool destroyMenu :: HMENU -> IO () c_DestroyMenu :: HMENU -> IO Bool deleteMenu :: HMENU -> MenuItem -> MenuFlag -> IO () c_DeleteMenu :: HMENU -> UINT -> UINT -> IO Bool setMenuItemInfo :: HMENU -> MenuItem -> Bool -> MenuItemMask -> MenuItemInfo -> IO () c_SetMenuItemInfo :: HMENU -> UINT -> Bool -> Ptr MenuItemInfo -> IO Bool trackPopupMenu :: HMENU -> TrackMenuFlag -> Int -> Int -> HWND -> RECT -> IO () c_TrackPopupMenu :: HMENU -> TrackMenuFlag -> Int -> Int -> Int -> HWND -> LPRECT -> IO Bool type TPMPARAMS = () withTPMPARAMS :: Ptr RECT -> (Ptr TPMPARAMS -> IO a) -> IO a trackPopupMenuEx :: HMENU -> TrackMenuFlag -> Int -> Int -> HWND -> Maybe (Ptr RECT) -> IO () c_TrackPopupMenuEx :: HMENU -> TrackMenuFlag -> Int -> Int -> HWND -> Ptr TPMPARAMS -> IO Bool appendMenu :: HMENU -> MenuFlag -> MenuID -> Maybe String -> IO () c_AppendMenu :: HMENU -> UINT -> MenuID -> LPCTSTR -> IO Bool insertMenu :: HMENU -> MenuItem -> MenuFlag -> MenuID -> Maybe String -> IO () c_InsertMenu :: HMENU -> UINT -> UINT -> MenuID -> LPCTSTR -> IO Bool modifyMenu :: HMENU -> MenuItem -> MenuFlag -> MenuID -> Maybe String -> IO () c_ModifyMenu :: HMENU -> UINT -> UINT -> MenuID -> LPCTSTR -> IO Bool removeMenu :: HMENU -> MenuItem -> MenuFlag -> IO () c_RemoveMenu :: HMENU -> UINT -> UINT -> IO Bool -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Key type VKey = DWORD vK_LBUTTON :: VKey vK_RBUTTON :: VKey vK_CANCEL :: VKey vK_MBUTTON :: VKey vK_BACK :: VKey vK_TAB :: VKey vK_CLEAR :: VKey vK_RETURN :: VKey vK_SHIFT :: VKey vK_CONTROL :: VKey vK_MENU :: VKey vK_PAUSE :: VKey vK_CAPITAL :: VKey vK_ESCAPE :: VKey vK_SPACE :: VKey vK_PRIOR :: VKey vK_NEXT :: VKey vK_END :: VKey vK_HOME :: VKey vK_LEFT :: VKey vK_UP :: VKey vK_RIGHT :: VKey vK_DOWN :: VKey vK_SELECT :: VKey vK_EXECUTE :: VKey vK_SNAPSHOT :: VKey vK_INSERT :: VKey vK_DELETE :: VKey vK_HELP :: VKey vK_NUMPAD0 :: VKey vK_NUMPAD1 :: VKey vK_NUMPAD2 :: VKey vK_NUMPAD3 :: VKey vK_NUMPAD4 :: VKey vK_NUMPAD5 :: VKey vK_NUMPAD6 :: VKey vK_NUMPAD7 :: VKey vK_NUMPAD8 :: VKey vK_NUMPAD9 :: VKey vK_MULTIPLY :: VKey vK_ADD :: VKey vK_SEPARATOR :: VKey vK_SUBTRACT :: VKey vK_DECIMAL :: VKey vK_DIVIDE :: VKey vK_F1 :: VKey vK_F2 :: VKey vK_F3 :: VKey vK_F4 :: VKey vK_F5 :: VKey vK_F6 :: VKey vK_F7 :: VKey vK_F8 :: VKey vK_F9 :: VKey vK_F10 :: VKey vK_F11 :: VKey vK_F12 :: VKey vK_F13 :: VKey vK_F14 :: VKey vK_F15 :: VKey vK_F16 :: VKey vK_F17 :: VKey vK_F18 :: VKey vK_F19 :: VKey vK_F20 :: VKey vK_F21 :: VKey vK_F22 :: VKey vK_F23 :: VKey vK_F24 :: VKey vK_NUMLOCK :: VKey vK_SCROLL :: VKey vK_XBUTTON1 :: VKey vK_XBUTTON2 :: VKey vK_KANA :: VKey vK_HANGUL :: VKey vK_JUNJA :: VKey vK_FINAL :: VKey vK_HANJA :: VKey vK_KANJI :: VKey vK_CONVERT :: VKey vK_NONCONVERT :: VKey vK_ACCEPT :: VKey vK_MODECHANGE :: VKey vK_PRINT :: VKey vK_APPS :: VKey vK_SLEEP :: VKey vK_LWIN :: VKey vK_RWIN :: VKey vK_LSHIFT :: VKey vK_RSHIFT :: VKey vK_LCONTROL :: VKey vK_RCONTROL :: VKey vK_LMENU :: VKey vK_RMENU :: VKey vK_BROWSER_BACK :: VKey vK_BROWSER_FORWARD :: VKey vK_BROWSER_REFRESH :: VKey vK_BROWSER_STOP :: VKey vK_BROWSER_SEARCH :: VKey vK_BROWSER_FAVORITES :: VKey vK_BROWSER_HOME :: VKey vK_VOLUME_MUTE :: VKey vK_VOLUME_DOWN :: VKey vK_VOLUME_UP :: VKey vK_MEDIA_NEXT_TRACK :: VKey vK_MEDIA_PREV_TRACK :: VKey vK_MEDIA_STOP :: VKey vK_MEDIA_PLAY_PAUSE :: VKey vK_LAUNCH_MAIL :: VKey vK_LAUNCH_MEDIA_SELECT :: VKey vK_LAUNCH_APP1 :: VKey vK_LAUNCH_APP2 :: VKey vK_OEM_1 :: VKey vK_OEM_PLUS :: VKey vK_OEM_COMMA :: VKey vK_OEM_MINUS :: VKey vK_OEM_PERIOD :: VKey vK_OEM_2 :: VKey vK_OEM_3 :: VKey vK_OEM_4 :: VKey vK_OEM_5 :: VKey vK_OEM_6 :: VKey vK_OEM_7 :: VKey vK_OEM_8 :: VKey vK_OEM_102 :: VKey vK_PROCESSKEY :: VKey vK_PACKET :: VKey vK_ATTN :: VKey vK_CRSEL :: VKey vK_EXSEL :: VKey vK_EREOF :: VKey vK_PLAY :: VKey vK_ZOOM :: VKey vK_NONAME :: VKey vK_PA1 :: VKey vK_OEM_CLEAR :: VKey c_VkKeyScanEx :: CWchar -> HKL -> IO SHORT c_MapVirtualKey :: VKey -> UINT -> IO UINT c_MapVirtualKeyEx :: VKey -> UINT -> HKL -> IO UINT enableWindow :: HWND -> Bool -> IO Bool getActiveWindow :: IO (Maybe HWND) c_GetActiveWindow :: IO HWND getAsyncKeyState :: Int -> IO WORD getFocus :: IO (Maybe HWND) c_GetFocus :: IO HWND getKBCodePage :: IO UINT isWindowEnabled :: HWND -> IO Bool getCurrentKeyboardLayout :: IO HKL getKeyboardLayoutList :: IO [HKL] getKeyboardLayoutName :: IO String withLoadKeyboardLayout :: KeyLayoutFlags -> (HKL -> IO a) -> IO a withLoadKeyboardLayoutWithName :: String -> KeyLayoutFlags -> (HKL -> IO a) -> IO a unloadKeyboardLayout :: HKL -> IO () c_GetKeyboardLayout :: TID -> IO HKL c_GetKeyboardLayoutList :: Int -> Ptr HKL -> IO UINT c_GetKeyboardLayoutName :: LPTSTR -> IO BOOL c_LoadKeyboardLayout :: LPCTSTR -> KeyLayoutFlags -> IO HKL c_UnloadKeyboardLayout :: HKL -> IO BOOL type HKL = Ptr () type KeyLayoutFlags = UINT kLF_ACTIVATE :: KeyLayoutFlags kLF_NOTELLSHELL :: KeyLayoutFlags kLF_REORDER :: KeyLayoutFlags kLF_REPLACELANG :: KeyLayoutFlags kLF_SUBSTITUTE_OK :: KeyLayoutFlags kLF_SETFORPROCESS :: KeyLayoutFlags -- | An FFI binding to the IMM (Input Method Manager) part of the Win32 -- API. module Graphics.Win32.Window.IMM type HIMC = Ptr () immGetContext :: HWND -> IO HIMC immGetOpenStatus :: HIMC -> IO BOOL immSetOpenStatus :: HIMC -> BOOL -> IO () c_ImmSetOpenStatus :: HIMC -> UINT -> IO BOOL data IMEMode IMEMode :: DWORD -> DWORD -> IMEMode immGetConversionStatus :: HIMC -> IO IMEMode c_ImmGetConversionStatus :: HIMC -> LPDWORD -> LPDWORD -> IO BOOL immSetConversionStatus :: HIMC -> IMEMode -> IO () c_ImmSetConversionStatus :: HIMC -> DWORD -> DWORD -> IO BOOL iME_CMODE_ALPHANUMERIC :: DWORD iME_CMODE_CHARCODE :: DWORD iME_CMODE_EUDC :: DWORD iME_CMODE_FIXED :: DWORD iME_CMODE_FULLSHAPE :: DWORD iME_CMODE_HANJACONVERT :: DWORD iME_CMODE_KATAKANA :: DWORD iME_CMODE_NATIVE :: DWORD iME_CMODE_NOCONVERSION :: DWORD iME_CMODE_ROMAN :: DWORD iME_CMODE_SOFTKBD :: DWORD iME_CMODE_SYMBOL :: DWORD iME_SMODE_AUTOMATIC :: DWORD iME_SMODE_NONE :: DWORD iME_SMODE_PHRASEPREDICT :: DWORD iME_SMODE_PLAURALCLAUSE :: DWORD iME_SMODE_SINGLECONVERT :: DWORD immReleaseContext :: HWND -> HIMC -> IO () c_ImmReleaseContext :: HWND -> HIMC -> IO BOOL immGetVirtualKey :: HWND -> IO VKey immSimulateHotKey :: HWND -> DWORD -> IO () c_ImmSimulateHotKey :: HWND -> DWORD -> IO BOOL -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Icon createIcon :: HINSTANCE -> Int -> Int -> BYTE -> BYTE -> Ptr BYTE -> Ptr BYTE -> IO HICON c_CreateIcon :: HINSTANCE -> Int -> Int -> BYTE -> BYTE -> Ptr BYTE -> Ptr BYTE -> IO HICON 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 c_DeleteDC :: HDC -> IO Bool c_CreateCompatibleDC :: HDC -> IO HDC c_CancelDC :: HDC -> IO Bool c_SelectClipPath :: HDC -> ClippingMode -> IO RegionType c_ExtSelectClipRgn :: HDC -> PRGN -> ClippingMode -> IO RegionType c_SelectClipRgn :: HDC -> PRGN -> IO RegionType c_SelectRgn :: HDC -> PRGN -> IO RegionType c_SelectPalette :: HDC -> HPALETTE -> Bool -> IO HPALETTE c_SelectPen :: HDC -> HPEN -> IO HPEN c_SelectFont :: HDC -> HFONT -> IO HFONT c_SelectBrush :: HDC -> HBRUSH -> IO HBRUSH c_SelectBitmap :: HDC -> HBITMAP -> IO HBITMAP c_GetCurrentPen :: HDC -> UINT -> IO HPEN c_GetCurrentPalette :: HDC -> UINT -> IO HPALETTE c_GetCurrentFont :: HDC -> UINT -> IO HFONT c_GetCurrentBrush :: HDC -> UINT -> IO HBRUSH c_GetCurrentBitmap :: HDC -> UINT -> IO HBITMAP c_RestoreDC :: HDC -> Int -> IO Bool c_SaveDC :: HDC -> IO Int c_SetMiterLimit :: HDC -> FLOAT -> Ptr FLOAT -> IO Bool c_GetMiterLimit :: HDC -> Ptr FLOAT -> IO Bool c_GetTextCharacterExtra :: HDC -> IO Int c_SetTextCharacterExtra :: HDC -> Int -> IO Int c_GetTextAlign :: HDC -> IO TextAlignment c_SetTextAlign :: HDC -> TextAlignment -> IO TextAlignment c_GetBrushOrgEx :: HDC -> Ptr POINT -> IO Bool c_SetBrushOrgEx :: HDC -> Int -> Int -> Ptr POINT -> IO Bool c_GetBkMode :: HDC -> IO BackgroundMode c_SetBkMode :: HDC -> BackgroundMode -> IO BackgroundMode c_GetTextColor :: HDC -> IO COLORREF c_SetTextColor :: HDC -> COLORREF -> IO COLORREF c_GetBkColor :: HDC -> IO COLORREF c_SetBkColor :: HDC -> COLORREF -> IO COLORREF c_GetStretchBltMode :: HDC -> IO StretchBltMode c_SetStretchBltMode :: HDC -> StretchBltMode -> IO StretchBltMode c_GetGraphicsMode :: HDC -> IO GraphicsMode c_SetGraphicsMode :: HDC -> GraphicsMode -> IO GraphicsMode c_GetPolyFillMode :: HDC -> IO PolyFillMode c_SetPolyFillMode :: HDC -> PolyFillMode -> IO PolyFillMode c_GetArcDirection :: HDC -> IO ArcDirection c_SetArcDirection :: HDC -> ArcDirection -> IO ArcDirection c_GetPixel :: HDC -> Int -> Int -> IO COLORREF getPixel :: HDC -> Int -> Int -> IO COLORREF setArcDirection :: HDC -> ArcDirection -> IO ArcDirection getArcDirection :: HDC -> IO ArcDirection setPolyFillMode :: HDC -> PolyFillMode -> IO PolyFillMode getPolyFillMode :: HDC -> IO PolyFillMode setGraphicsMode :: HDC -> GraphicsMode -> IO GraphicsMode getGraphicsMode :: HDC -> IO GraphicsMode setStretchBltMode :: HDC -> StretchBltMode -> IO StretchBltMode getStretchBltMode :: HDC -> IO StretchBltMode setBkColor :: HDC -> COLORREF -> IO COLORREF getBkColor :: HDC -> IO COLORREF setTextColor :: HDC -> COLORREF -> IO COLORREF getTextColor :: HDC -> IO COLORREF setBkMode :: HDC -> BackgroundMode -> IO BackgroundMode getBkMode :: HDC -> IO BackgroundMode setBrushOrgEx :: HDC -> Int -> Int -> IO POINT getBrushOrgEx :: HDC -> IO POINT setTextAlign :: HDC -> TextAlignment -> IO TextAlignment getTextAlign :: HDC -> IO TextAlignment setTextCharacterExtra :: HDC -> Int -> IO Int getTextCharacterExtra :: HDC -> IO Int getMiterLimit :: HDC -> IO Float setMiterLimit :: HDC -> Float -> IO Float saveDC :: HDC -> IO Int restoreDC :: HDC -> Int -> IO () getCurrentBitmap :: HDC -> IO HBITMAP getCurrentBrush :: HDC -> IO HBRUSH getCurrentFont :: HDC -> IO HFONT getCurrentPalette :: HDC -> IO HPALETTE getCurrentPen :: HDC -> IO HPEN selectBitmap :: HDC -> HBITMAP -> IO HBITMAP selectBrush :: HDC -> HBRUSH -> IO HBRUSH selectFont :: HDC -> HFONT -> IO HFONT selectPen :: HDC -> HPEN -> IO HPEN selectPalette :: HDC -> HPALETTE -> Bool -> IO HPALETTE selectRgn :: HDC -> HRGN -> IO RegionType selectClipRgn :: HDC -> Maybe HRGN -> IO RegionType extSelectClipRgn :: HDC -> Maybe HRGN -> ClippingMode -> IO RegionType selectClipPath :: HDC -> ClippingMode -> IO RegionType cancelDC :: HDC -> IO () createCompatibleDC :: Maybe HDC -> IO HDC deleteDC :: HDC -> IO () -- | 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 http://msdn.microsoft.com/library/ under Graphics and -- Multimedia 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 c_UpdateLayeredWindow :: HANDLE -> HDC -> Ptr POINT -> Ptr SIZE -> HDC -> Ptr POINT -> COLORREF -> Ptr BLENDFUNCTION -> DWORD -> IO BOOL c_GetLayeredWindowAttributes :: HANDLE -> COLORREF -> Ptr BYTE -> Ptr DWORD -> IO BOOL c_SetLayeredWindowAttributes :: HANDLE -> COLORREF -> BYTE -> DWORD -> IO BOOL toLayeredWindow :: HANDLE -> IO () gWL_EXSTYLE :: INT wS_EX_LAYERED :: WindowStyleEx lWA_COLORKEY :: DWORD lWA_ALPHA :: DWORD uLW_ALPHA :: DWORD uLW_COLORKEY :: DWORD uLW_OPAQUE :: DWORD c_GetWindowLongPtr :: HANDLE -> INT -> IO LONG_PTR -- | FFI bindings to the various standard Win32 controls. module Graphics.Win32.Control type ButtonStyle = WindowStyle bS_PUSHBUTTON :: ButtonStyle bS_DEFPUSHBUTTON :: ButtonStyle bS_CHECKBOX :: ButtonStyle bS_AUTOCHECKBOX :: ButtonStyle bS_RADIOBUTTON :: ButtonStyle bS_3STATE :: ButtonStyle bS_AUTO3STATE :: ButtonStyle bS_GROUPBOX :: ButtonStyle bS_AUTORADIOBUTTON :: ButtonStyle bS_OWNERDRAW :: ButtonStyle bS_LEFTTEXT :: ButtonStyle bS_USERBUTTON :: ButtonStyle createButton :: String -> WindowStyle -> ButtonStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HANDLE -> IO HWND buttonStyle :: ClassName type ButtonState = UINT bST_CHECKED :: ButtonState bST_INDETERMINATE :: ButtonState bST_UNCHECKED :: ButtonState checkDlgButton :: HWND -> Int -> ButtonState -> IO () c_CheckDlgButton :: HWND -> Int -> ButtonState -> IO Bool checkRadioButton :: HWND -> Int -> Int -> Int -> IO () c_CheckRadioButton :: HWND -> Int -> Int -> Int -> IO Bool isDlgButtonChecked :: HWND -> Int -> IO ButtonState c_IsDlgButtonChecked :: HWND -> Int -> IO ButtonState type ComboBoxStyle = WindowStyle cBS_SIMPLE :: ComboBoxStyle cBS_DROPDOWN :: ComboBoxStyle cBS_DROPDOWNLIST :: ComboBoxStyle cBS_OWNERDRAWFIXED :: ComboBoxStyle cBS_OWNERDRAWVARIABLE :: ComboBoxStyle cBS_AUTOHSCROLL :: ComboBoxStyle cBS_OEMCONVERT :: ComboBoxStyle cBS_SORT :: ComboBoxStyle createComboBox :: String -> WindowStyle -> ComboBoxStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND cBS_HASSTRINGS :: ComboBoxStyle cBS_NOINTEGRALHEIGHT :: ComboBoxStyle cBS_DISABLENOSCROLL :: ComboBoxStyle comboBoxStyle :: ClassName type EditStyle = WindowStyle eS_LEFT :: EditStyle eS_CENTER :: EditStyle eS_RIGHT :: EditStyle eS_MULTILINE :: EditStyle eS_UPPERCASE :: EditStyle eS_LOWERCASE :: EditStyle eS_PASSWORD :: EditStyle eS_AUTOVSCROLL :: EditStyle eS_AUTOHSCROLL :: EditStyle createEditWindow :: String -> WindowStyle -> EditStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND eS_NOHIDESEL :: EditStyle eS_OEMCONVERT :: EditStyle eS_READONLY :: EditStyle eS_WANTRETURN :: EditStyle editStyle :: ClassName type ListBoxStyle = WindowStyle lBS_NOTIFY :: ListBoxStyle lBS_SORT :: ListBoxStyle lBS_NOREDRAW :: ListBoxStyle lBS_MULTIPLESEL :: ListBoxStyle lBS_OWNERDRAWFIXED :: ListBoxStyle lBS_OWNERDRAWVARIABLE :: ListBoxStyle lBS_HASSTRINGS :: ListBoxStyle lBS_USETABSTOPS :: ListBoxStyle lBS_NOINTEGRALHEIGHT :: ListBoxStyle createListBox :: String -> WindowStyle -> ListBoxStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND lBS_MULTICOLUMN :: ListBoxStyle lBS_WANTKEYBOARDINPUT :: ListBoxStyle lBS_DISABLENOSCROLL :: ListBoxStyle lBS_STANDARD :: ListBoxStyle listBoxStyle :: ClassName type ScrollbarStyle = WindowStyle sBS_HORZ :: ScrollbarStyle sBS_TOPALIGN :: ScrollbarStyle sBS_BOTTOMALIGN :: ScrollbarStyle sBS_VERT :: ScrollbarStyle sBS_LEFTALIGN :: ScrollbarStyle sBS_RIGHTALIGN :: ScrollbarStyle sBS_SIZEBOX :: ScrollbarStyle createScrollbar :: String -> WindowStyle -> ScrollbarStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND sBS_SIZEBOXTOPLEFTALIGN :: ScrollbarStyle sBS_SIZEBOXBOTTOMRIGHTALIGN :: ScrollbarStyle scrollBarStyle :: ClassName type StaticControlStyle = WindowStyle sS_LEFT :: StaticControlStyle sS_CENTER :: StaticControlStyle sS_RIGHT :: StaticControlStyle sS_ICON :: StaticControlStyle sS_BLACKRECT :: StaticControlStyle sS_GRAYRECT :: StaticControlStyle sS_WHITERECT :: StaticControlStyle sS_BLACKFRAME :: StaticControlStyle sS_GRAYFRAME :: StaticControlStyle createStaticWindow :: String -> WindowStyle -> StaticControlStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> HWND -> Maybe HMENU -> HANDLE -> IO HWND sS_WHITEFRAME :: StaticControlStyle sS_SIMPLE :: StaticControlStyle sS_LEFTNOWORDWRAP :: StaticControlStyle sS_NOPREFIX :: StaticControlStyle staticStyle :: ClassName pBM_DELTAPOS :: WindowMessage pBM_SETPOS :: WindowMessage pBM_SETRANGE :: WindowMessage pBM_SETSTEP :: WindowMessage pBM_STEPIT :: WindowMessage -- | A collection of FFI declarations for interfacing with Win32. module Graphics.Win32.Dialogue type DTemplate = LPCTSTR type DTemplateMem = Ptr Stub_DTM newtype Stub_DTM Stub_DTM :: DTemplateMem -> Stub_DTM newtype DIA_TEMPLATE DIA_TEMPLATE :: Ptr DIA_TEMPLATE -> DIA_TEMPLATE type DialogStyle = WindowStyle mkDialogTemplate :: String -> IO DTemplate type ResourceID = Int mkResource :: ResourceID -> IO (Ptr a) mkDialogTemplateFromResource :: Int -> IO DTemplate type DialogProc = HWND -> WindowMessage -> WPARAM -> LPARAM -> IO Int marshall_dialogProc_ :: DialogProc -> IO (FunPtr DialogProc) mkDialogClosure :: DialogProc -> IO (FunPtr DialogProc) dialogBox :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> IO Int dialogBoxParam :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> LPARAM -> IO Int c_DialogBoxParam :: HINSTANCE -> DTemplate -> HWND -> FunPtr DialogProc -> LPARAM -> IO Int dialogBoxIndirect :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> IO Int dialogBoxIndirectParam :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> LPARAM -> IO Int c_DialogBoxIndirectParam :: HINSTANCE -> DTemplateMem -> HWND -> FunPtr DialogProc -> LPARAM -> IO Int data DialogTemplate DialogTemplate :: Int -> Int -> Int -> Int -> WindowStyle -> DWORD -> Either ResourceID String -> Either ResourceID String -> Either ResourceID String -> Either ResourceID String -> Int -> [DialogControl] -> DialogTemplate data DialogControl DialogControl :: Int -> Int -> Int -> Int -> Either ResourceID String -> Either ResourceID String -> WindowStyle -> DWORD -> Int -> DialogControl mkDialogFromTemplate :: DialogTemplate -> IO DTemplateMem pushButtonControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl labelControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl listBoxControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl comboBoxControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl editControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl scrollBarControl :: Int -> Int -> Int -> Int -> DWORD -> DWORD -> Int -> String -> DialogControl getFinalDialog :: Ptr DIA_TEMPLATE -> IO DTemplateMem mkDiaTemplate :: Int -> Int -> Int -> Int -> Int -> WindowStyle -> DWORD -> LPCWSTR -> LPCWSTR -> LPCWSTR -> LPCWSTR -> Int -> IO (Ptr DIA_TEMPLATE) addControl :: Ptr DIA_TEMPLATE -> DialogControl -> IO () addDiaControl :: Ptr DIA_TEMPLATE -> LPCWSTR -> Int -> LPCWSTR -> DWORD -> Int -> Int -> Int -> Int -> DWORD -> IO (Ptr DIA_TEMPLATE) marshall_res :: Either ResourceID String -> IO LPCWSTR createDialog :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> IO HWND createDialogParam :: HINSTANCE -> DTemplate -> Maybe HWND -> DialogProc -> LPARAM -> IO HWND c_CreateDialogParam :: HINSTANCE -> DTemplate -> HWND -> FunPtr DialogProc -> LPARAM -> IO HWND createDialogIndirect :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> IO HWND createDialogIndirectParam :: HINSTANCE -> DTemplateMem -> Maybe HWND -> DialogProc -> LPARAM -> IO HWND c_CreateDialogIndirectParam :: HINSTANCE -> DTemplateMem -> HWND -> FunPtr DialogProc -> LPARAM -> IO HWND defDlgProc :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT endDialog :: HWND -> Int -> IO () c_EndDialog :: HWND -> Int -> IO BOOL getDialogBaseUnits :: IO LONG getDlgCtrlID :: HWND -> IO Int c_GetDlgCtrlID :: HWND -> IO Int getDlgItem :: HWND -> Int -> IO HWND c_GetDlgItem :: HWND -> Int -> IO HWND getDlgItemInt :: HWND -> Int -> Bool -> IO Int c_GetDlgItemInt :: HWND -> Int -> Ptr Bool -> Bool -> IO UINT getDlgItemText :: HWND -> Int -> Int -> IO String c_GetDlgItemText :: HWND -> Int -> LPTSTR -> Int -> IO Int getNextDlgGroupItem :: HWND -> HWND -> BOOL -> IO HWND c_GetNextDlgGroupItem :: HWND -> HWND -> BOOL -> IO HWND getNextDlgTabItem :: HWND -> HWND -> BOOL -> IO HWND c_GetNextDlgTabItem :: HWND -> HWND -> BOOL -> IO HWND isDialogMessage :: HWND -> LPMSG -> IO BOOL mapDialogRect :: HWND -> LPRECT -> IO () c_MapDialogRect :: HWND -> LPRECT -> IO Bool sendDlgItemMessage :: HWND -> Int -> WindowMessage -> WPARAM -> LPARAM -> IO LONG setDlgItemInt :: HWND -> Int -> UINT -> BOOL -> IO () c_SetDlgItemInt :: HWND -> Int -> UINT -> BOOL -> IO Bool setDlgItemText :: HWND -> Int -> String -> IO () c_SetDlgItemText :: HWND -> Int -> LPCTSTR -> IO Bool dS_3DLOOK :: WindowStyle dS_ABSALIGN :: WindowStyle dS_CENTER :: WindowStyle dS_CENTERMOUSE :: WindowStyle dS_CONTEXTHELP :: WindowStyle dS_CONTROL :: WindowStyle dS_FIXEDSYS :: WindowStyle dS_LOCALEDIT :: WindowStyle dS_MODALFRAME :: WindowStyle dS_NOFAILCREATE :: WindowStyle dS_NOIDLEMSG :: WindowStyle dS_SETFONT :: WindowStyle dS_SETFOREGROUND :: WindowStyle dS_SYSMODAL :: WindowStyle dM_GETDEFID :: WindowMessage dM_REPOSITION :: WindowMessage dM_SETDEFID :: WindowMessage wM_CTLCOLORDLG :: WindowMessage wM_CTLCOLORMSGBOX :: WindowMessage -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.WindowsString.Types c_wcslen :: CWString -> IO SIZE_T withTString :: WindowsString -> (LPTSTR -> IO a) -> IO a withFilePath :: WindowsPath -> (LPTSTR -> IO a) -> IO a withTStringLen :: WindowsString -> ((LPTSTR, Int) -> IO a) -> IO a peekTString :: LPCTSTR -> IO WindowsString peekTStringLen :: (LPCTSTR, Int) -> IO WindowsString newTString :: WindowsString -> IO LPCTSTR -- | Wrapper around useAsCString, checking the encoded -- FilePath for internal NUL codepoints as these are disallowed in -- Windows filepaths. See -- https://gitlab.haskell.org/ghc/ghc/-/issues/13660 useAsCWStringSafe :: WindowsPath -> (CWString -> IO a) -> IO a 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 errorWin :: String -> IO a failWith :: String -> ErrCode -> IO a try :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO WindowsString nullPtr :: Ptr a type PrimaryLANGID = WORD type SubLANGID = WORD type SortID = WORD type LANGID = WORD type LCID = DWORD type ErrCode = DWORD type MbHMODULE = Maybe HMODULE type HMODULE = Ptr () type MbHINSTANCE = Maybe HINSTANCE type HINSTANCE = Ptr () type MbHANDLE = Maybe HANDLE type PKEY = HANDLE type HKEY = ForeignHANDLE type ForeignHANDLE = ForeignPtr () type HANDLE = Ptr () type TCHAR = CWchar type MbLPCTSTR = Maybe LPCTSTR type MbLPCSTR = Maybe LPCSTR type MbLPVOID = Maybe LPVOID type LPCTSTR_ = LPCTSTR type LPCTSTR = LPTSTR type LPTSTR = Ptr TCHAR type LPCWSTR = LPWSTR type LPWSTR = Ptr CWchar type LPCSTR = LPSTR type LPSTR = Ptr CChar type LPDWORD = Ptr DWORD type PUCHAR = Ptr UCHAR type LPBYTE = Ptr BYTE type LPBOOL = Ptr BOOL type LPVOID = Ptr () type Addr = Ptr () type HRESULT = LONG type MbATOM = Maybe ATOM type SIZE_T = ULONG_PTR type LRESULT = LONG_PTR type LPARAM = LONG_PTR type WPARAM = UINT_PTR type ATOM = WORD type MbINT = Maybe INT type MbString = Maybe String type DDWORD = Word64 type HALF_PTR = Ptr INT32 type DWORD_PTR = ULONG_PTR type ULONG_PTR = CUIntPtr type LONG_PTR = CIntPtr type UINT_PTR = Word type ULONG = Word32 type INT_PTR = Ptr CInt type SHORT = Int16 type ULONG64 = Word64 type ULONG32 = Word32 type UINT64 = Word64 type UINT32 = Word32 type LONG64 = Int64 type LONG32 = Int32 type INT64 = Int64 type INT32 = Int32 type DWORD64 = Word64 type DWORD32 = Word32 type LARGE_INTEGER = Int64 type FLOAT = Float type LONG = Int32 type DWORD = Word32 type WORD = Word16 type INT = Int32 type UINT = Word32 type USHORT = Word16 type UCHAR = CUChar type BYTE = Word8 type BOOL = Bool sUBLANGID :: LANGID -> SubLANGID pRIMARYLANGID :: LANGID -> PrimaryLANGID mAKELANGID :: PrimaryLANGID -> SubLANGID -> LANGID sORTIDFROMLCID :: LCID -> SortID lANGIDFROMLCID :: LCID -> LANGID mAKELCID :: LANGID -> SortID -> LCID castPtrToUINTPtr :: Ptr s -> UINT_PTR castUINTPtrToPtr :: UINT_PTR -> Ptr a hIWORD :: DWORD -> WORD lOWORD :: DWORD -> WORD getErrorMessage :: DWORD -> IO LPWSTR setLastError :: ErrCode -> IO () getLastError :: IO ErrCode localFree :: Ptr a -> IO (Ptr a) deleteObjectFinaliser :: FunPtr (Ptr a -> IO ()) c_maperrno_func :: ErrCode -> IO Errno c_get_osfhandle :: CInt -> IO HANDLE -- | Returns -1 on error. Otherwise writes two values representing the file -- into the given ptrs. internal_getUniqueFileInfo :: HANDLE -> Ptr Word64 -> Ptr Word64 -> IO () internal_lockFile :: CUIntPtr -> Word64 -> Word64 -> CInt -> IO CInt _open_osfhandle :: CIntPtr -> CInt -> IO CInt 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 newForeignHANDLE :: HANDLE -> IO ForeignHANDLE handleToWord :: HANDLE -> UINT_PTR nullHANDLE :: HANDLE nullHINSTANCE :: HINSTANCE nullFinalHANDLE :: ForeignPtr a iNVALID_HANDLE_VALUE :: HANDLE iNVALID_SET_FILE_POINTER :: DWORD -- | Create a Haskell Handle from a Windows HANDLE. -- -- Beware that this function allocates a new file descriptor. A -- consequence of this is that calling hANDLEToHandle on the -- standard Windows handles will not give you stdin, -- stdout, or stderr. For example, if you run this code: -- --
--   import Graphics.Win32.Misc
--   stdoutHANDLE <- getStdHandle sTD_OUTPUT_HANDLE
--   stdout2 <- hANDLEToHandle stdoutHANDLE
--   
-- -- Then although you can use stdout2 to write to standard -- output, it is not the case that stdout == stdout2. hANDLEToHandle :: HANDLE -> IO Handle -- | Extract a Windows HANDLE from a Haskell Handle and -- perform an action on it. withHandleToHANDLE :: Handle -> (HANDLE -> IO a) -> IO a withHandleToHANDLENative :: Handle -> (HANDLE -> IO a) -> IO a withHandleToHANDLEPosix :: Handle -> (HANDLE -> IO a) -> IO a withStablePtr :: a -> (StablePtr a -> IO b) -> IO b eRROR_INSUFFICIENT_BUFFER :: ErrCode eRROR_MOD_NOT_FOUND :: ErrCode eRROR_PROC_NOT_FOUND :: ErrCode eERROR_ENVVAR_NOT_FOUND :: ErrCode ddwordToDwords :: DDWORD -> (DWORD, DWORD) dwordsToDdword :: (DWORD, DWORD) -> DDWORD -- | Utilities for primitive marshalling of Windows' C strings. module System.Win32.WindowsString.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 :: WindowsString -> (LPTSTR -> IO a) -> IO a withTStringLen :: WindowsString -> ((LPTSTR, Int) -> IO a) -> IO a peekTString :: LPCTSTR -> IO WindowsString peekTStringLen :: (LPCTSTR, Int) -> IO WindowsString newTString :: WindowsString -> IO LPCTSTR -- | Marshal a dummy Haskell string into a NUL terminated C wide string -- using temporary storage. -- -- 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. -- -- withTStringBufferLen :: Int -> ((LPTSTR, Int) -> IO a) -> IO a -- | Win32 stuff from shell32.dll module System.Win32.WindowsString.Shell sHGetFolderPath :: HWND -> CSIDL -> HANDLE -> SHGetFolderPathFlags -> IO WindowsString 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 -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.WindowsString.Info getSystemDirectory :: IO WindowsString getWindowsDirectory :: IO WindowsString getCurrentDirectory :: IO WindowsString getTemporaryDirectory :: IO WindowsString getFullPathName :: WindowsPath -> IO WindowsPath getLongPathName :: WindowsPath -> IO WindowsPath getShortPathName :: WindowsPath -> IO WindowsPath searchPath :: Maybe WindowsString -> WindowsPath -> Maybe WindowsString -> IO (Maybe WindowsPath) getUserName :: IO WindowsString type SMSetting = UINT 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 data ProcessorArchitecture PaUnknown :: WORD -> ProcessorArchitecture PaIntel :: ProcessorArchitecture PaMips :: ProcessorArchitecture PaAlpha :: ProcessorArchitecture PaPpc :: ProcessorArchitecture PaIa64 :: ProcessorArchitecture PaIa32OnIa64 :: ProcessorArchitecture PaAmd64 :: ProcessorArchitecture 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 sM_ARRANGE :: SMSetting sM_CLEANBOOT :: SMSetting sM_CMETRICS :: SMSetting sM_CMOUSEBUTTONS :: SMSetting sM_CXBORDER :: SMSetting sM_CYBORDER :: SMSetting sM_CXCURSOR :: SMSetting sM_CYCURSOR :: SMSetting sM_CXDLGFRAME :: SMSetting sM_CYDLGFRAME :: SMSetting sM_CXDOUBLECLK :: SMSetting sM_CYDOUBLECLK :: SMSetting sM_CXDRAG :: SMSetting sM_CYDRAG :: SMSetting sM_CXEDGE :: SMSetting sM_CYEDGE :: SMSetting sM_CXFRAME :: SMSetting sM_CYFRAME :: SMSetting sM_CXFULLSCREEN :: SMSetting sM_CYFULLSCREEN :: SMSetting sM_CXHSCROLL :: SMSetting sM_CYVSCROLL :: SMSetting sM_CXICON :: SMSetting sM_CYICON :: SMSetting sM_CXICONSPACING :: SMSetting sM_CYICONSPACING :: SMSetting sM_CXMAXIMIZED :: SMSetting sM_CYMAXIMIZED :: SMSetting sM_CXMENUCHECK :: SMSetting sM_CYMENUCHECK :: SMSetting sM_CXMENUSIZE :: SMSetting sM_CYMENUSIZE :: SMSetting sM_CXMIN :: SMSetting sM_CYMIN :: SMSetting sM_CXMINIMIZED :: SMSetting sM_CYMINIMIZED :: SMSetting sM_CXMINTRACK :: SMSetting sM_CYMINTRACK :: SMSetting sM_CXSCREEN :: SMSetting sM_CYSCREEN :: SMSetting sM_CXSIZE :: SMSetting sM_CYSIZE :: SMSetting sM_CXSIZEFRAME :: SMSetting sM_CYSIZEFRAME :: SMSetting sM_CXSMICON :: SMSetting sM_CYSMICON :: SMSetting sM_CXSMSIZE :: SMSetting sM_CYSMSIZE :: SMSetting sM_CXVSCROLL :: SMSetting sM_CYHSCROLL :: SMSetting sM_CYVTHUMB :: SMSetting sM_CYCAPTION :: SMSetting sM_CYKANJIWINDOW :: SMSetting sM_CYMENU :: SMSetting sM_CYSMCAPTION :: SMSetting sM_DBCSENABLED :: SMSetting sM_DEBUG :: SMSetting sM_MENUDROPALIGNMENT :: SMSetting sM_MIDEASTENABLED :: SMSetting sM_MOUSEPRESENT :: SMSetting sM_NETWORK :: SMSetting sM_PENWINDOWS :: SMSetting sM_SECURE :: SMSetting sM_SHOWSOUNDS :: SMSetting sM_SLOWMACHINE :: SMSetting sM_SWAPBUTTON :: SMSetting getSystemInfo :: IO SYSTEM_INFO -- | A collection of FFI declarations for using Windows DebugApi. module System.Win32.WindowsString.DebugApi outputDebugString :: WindowsString -> IO () type ExceptionInfo = (Bool, Bool, ForeignAddress) type ImageInfo = (HANDLE, ForeignAddress, DWORD, DWORD, ForeignAddress) type ThreadInfo = (THANDLE, ForeignAddress, ForeignAddress) type THANDLE = Ptr () type PHANDLE = Ptr () type ForeignAddress = Word32 type DebugEventId = (PID, TID) type TID = DWORD type PID = DWORD debugBreak :: IO () isDebuggerPresent :: IO BOOL type DebugEvent = (DebugEventId, DebugEventInfo) 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 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 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] -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.WindowsString.DLL getModuleFileName :: HMODULE -> IO WindowsString getModuleHandle :: Maybe WindowsString -> IO HMODULE loadLibrary :: WindowsString -> IO HMODULE loadLibraryEx :: WindowsString -> HANDLE -> LoadLibraryFlags -> IO HMODULE setDllDirectory :: Maybe WindowsString -> IO () type LoadLibraryFlags = DWORD -- | A collection of FFI declarations for interfacing with Win32 Console -- API (WindowsString variant) module System.Win32.WindowsString.Console getConsoleMode :: HANDLE -> IO DWORD setConsoleMode :: HANDLE -> DWORD -> IO () eNABLE_ECHO_INPUT :: DWORD eNABLE_EXTENDED_FLAGS :: DWORD eNABLE_INSERT_MODE :: DWORD eNABLE_LINE_INPUT :: DWORD eNABLE_MOUSE_INPUT :: DWORD eNABLE_PROCESSED_INPUT :: DWORD eNABLE_QUICK_EDIT_MODE :: DWORD eNABLE_WINDOW_INPUT :: DWORD eNABLE_VIRTUAL_TERMINAL_INPUT :: DWORD eNABLE_PROCESSED_OUTPUT :: DWORD eNABLE_WRAP_AT_EOL_OUTPUT :: DWORD eNABLE_VIRTUAL_TERMINAL_PROCESSING :: DWORD dISABLE_NEWLINE_AUTO_RETURN :: DWORD eNABLE_LVB_GRID_WORLDWIDE :: DWORD getConsoleCP :: IO UINT setConsoleCP :: UINT -> IO () getConsoleOutputCP :: IO UINT setConsoleOutputCP :: UINT -> IO () type CtrlEvent = DWORD cTRL_C_EVENT :: CtrlEvent cTRL_BREAK_EVENT :: CtrlEvent generateConsoleCtrlEvent :: CtrlEvent -> DWORD -> IO () -- | This function can be used to parse command line arguments and return -- the split up arguments as elements in a list. commandLineToArgv :: WindowsString -> IO [WindowsString] getCommandLineW :: IO LPWSTR -- | Based on GetCommandLineW. This behaves slightly different -- than getArgs. See the online documentation: -- https://learn.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinew getArgs :: IO [WindowsString] data CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO :: COORD -> COORD -> WORD -> SMALL_RECT -> COORD -> CONSOLE_SCREEN_BUFFER_INFO [dwSize] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD [dwCursorPosition] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD [wAttributes] :: CONSOLE_SCREEN_BUFFER_INFO -> WORD [srWindow] :: CONSOLE_SCREEN_BUFFER_INFO -> SMALL_RECT [dwMaximumWindowSize] :: CONSOLE_SCREEN_BUFFER_INFO -> COORD data CONSOLE_SCREEN_BUFFER_INFOEX CONSOLE_SCREEN_BUFFER_INFOEX :: COORD -> COORD -> WORD -> SMALL_RECT -> COORD -> WORD -> BOOL -> [COLORREF] -> CONSOLE_SCREEN_BUFFER_INFOEX [dwSizeEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> COORD [dwCursorPositionEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> COORD [wAttributesEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> WORD [srWindowEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> SMALL_RECT [dwMaximumWindowSizeEx] :: CONSOLE_SCREEN_BUFFER_INFOEX -> COORD [wPopupAttributes] :: CONSOLE_SCREEN_BUFFER_INFOEX -> WORD [bFullscreenSupported] :: CONSOLE_SCREEN_BUFFER_INFOEX -> BOOL -- | Only the first 16 COLORREF values passed to the Windows Console -- API. If fewer than 16 values, the remainder are padded with 0 -- when passed to the API. [colorTable] :: CONSOLE_SCREEN_BUFFER_INFOEX -> [COLORREF] data COORD COORD :: SHORT -> SHORT -> COORD [xPos] :: COORD -> SHORT [yPos] :: COORD -> SHORT data SMALL_RECT SMALL_RECT :: SHORT -> SHORT -> SHORT -> SHORT -> SMALL_RECT [leftPos] :: SMALL_RECT -> SHORT [topPos] :: SMALL_RECT -> SHORT [rightPos] :: SMALL_RECT -> SHORT [bottomPos] :: SMALL_RECT -> SHORT type COLORREF = Word32 getConsoleScreenBufferInfo :: HANDLE -> IO CONSOLE_SCREEN_BUFFER_INFO getCurrentConsoleScreenBufferInfo :: IO CONSOLE_SCREEN_BUFFER_INFO getConsoleScreenBufferInfoEx :: HANDLE -> IO CONSOLE_SCREEN_BUFFER_INFOEX getCurrentConsoleScreenBufferInfoEx :: IO CONSOLE_SCREEN_BUFFER_INFOEX getEnv :: WindowsString -> IO (Maybe WindowsString) getEnvironment :: IO [(WindowsString, WindowsString)] -- | Windows' unsigned integer types and pointer type. module System.Win32.Word type WORD = Word16 type DWORD = Word32 type PDWORD = Ptr DWORD type LPDWORD = Ptr DWORD type DWORDLONG = Word64 type DDWORD = Word64 type DWORD32 = Word32 type DWORD64 = Word64 type DWORD_PTR = ULONG_PTR -- | Utilities for calling Win32 API module System.Win32.Utils -- | Support for API calls that are passed a fixed-size buffer and tell you -- via the return value if the buffer was too small. In that case, we -- extend the buffer size and try again. try :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String tryWithoutNull :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String -- | Support for API calls that return the required size, in characters -- including a null character, of the buffer when passed a buffer size of -- zero. trySized :: String -> (LPTSTR -> CInt -> IO CInt) -> IO String try' :: Storable a => String -> (Ptr a -> PDWORD -> IO BOOL) -> DWORD -> IO [a] maybePtr :: Maybe (Ptr a) -> Ptr a ptrToMaybe :: Ptr a -> Maybe (Ptr a) maybeNum :: Num a => Maybe a -> a numToMaybe :: (Eq a, Num a) => a -> Maybe a -- | See also: maybePeek function. peekMaybe :: Storable a => Ptr a -> IO (Maybe a) -- | See also: maybeWith function. withMaybe :: Storable a => Maybe a -> (Ptr a -> IO b) -> IO b -- | Translate from a Windows API day, month, year, and era format picture -- to the closest corresponding format string used by formatTime. fromDateFormatPicture :: String -> Maybe String -- | Translate from a Windows API hours, minute, and second format picture -- to the closest corresponding format string used by formatTime. fromTimeFormatPicture :: String -> Maybe String instance GHC.Show.Show System.Win32.Utils.DateFormatPicture instance GHC.Classes.Eq System.Win32.Utils.DateFormatPicture instance GHC.Show.Show System.Win32.Utils.TimeFormatPicture instance GHC.Classes.Eq System.Win32.Utils.TimeFormatPicture -- | Utilities for calling Win32 API module System.Win32.WindowsString.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 WindowsString tryWithoutNull :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO WindowsString -- | Support for API calls that return the required size, in characters -- including a null character, of the buffer when passed a buffer size of -- zero. trySized :: String -> (LPTSTR -> CInt -> IO CInt) -> IO WindowsString 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 try' :: Storable a => String -> (Ptr a -> PDWORD -> IO BOOL) -> DWORD -> IO [a] -- | See also: maybePeek function. peekMaybe :: Storable a => Ptr a -> IO (Maybe a) -- | See also: maybeWith function. withMaybe :: Storable a => Maybe a -> (Ptr a -> IO b) -> IO b -- | Translate from a Windows API day, month, year, and era format picture -- to the closest corresponding format string used by formatTime. fromDateFormatPicture :: String -> Maybe String -- | Translate from a Windows API hours, minute, and second format picture -- to the closest corresponding format string used by formatTime. fromTimeFormatPicture :: String -> Maybe String -- | A collection of FFI declarations for interfacing with Win32 Time API. module System.Win32.Time newtype FILETIME FILETIME :: DDWORD -> FILETIME data SYSTEMTIME SYSTEMTIME :: WORD -> SYSTEMTIME [wYear, wMonth, wDayOfWeek, wDay, wHour, wMinute, wSecond, wMilliseconds] :: SYSTEMTIME -> WORD data TIME_ZONE_INFORMATION TIME_ZONE_INFORMATION :: LONG -> String -> SYSTEMTIME -> LONG -> String -> SYSTEMTIME -> LONG -> TIME_ZONE_INFORMATION [tziBias] :: TIME_ZONE_INFORMATION -> LONG [tziStandardName] :: TIME_ZONE_INFORMATION -> String [tziStandardDate] :: TIME_ZONE_INFORMATION -> SYSTEMTIME [tziStandardBias] :: TIME_ZONE_INFORMATION -> LONG [tziDaylightName] :: TIME_ZONE_INFORMATION -> String [tziDaylightDate] :: TIME_ZONE_INFORMATION -> SYSTEMTIME [tziDaylightBias] :: TIME_ZONE_INFORMATION -> LONG data TimeZoneId TzIdUnknown :: TimeZoneId TzIdStandard :: TimeZoneId TzIdDaylight :: TimeZoneId getSystemTime :: IO SYSTEMTIME setSystemTime :: SYSTEMTIME -> IO () getSystemTimeAsFileTime :: IO FILETIME getLocalTime :: IO SYSTEMTIME setLocalTime :: SYSTEMTIME -> IO () getSystemTimeAdjustment :: IO (Maybe (Int, Int)) getTickCount :: IO DWORD getLastInputInfo :: IO DWORD getIdleTime :: IO Integer setSystemTimeAdjustment :: Maybe Int -> IO () getTimeZoneInformation :: IO (TimeZoneId, TIME_ZONE_INFORMATION) systemTimeToFileTime :: SYSTEMTIME -> IO FILETIME fileTimeToSystemTime :: FILETIME -> IO SYSTEMTIME getFileTime :: HANDLE -> IO (FILETIME, FILETIME, FILETIME) setFileTime :: HANDLE -> Maybe FILETIME -> Maybe FILETIME -> Maybe FILETIME -> IO () invalidFileTime :: FILETIME fileTimeToLocalFileTime :: FILETIME -> IO FILETIME localFileTimeToFileTime :: FILETIME -> IO FILETIME queryPerformanceFrequency :: IO Integer queryPerformanceCounter :: IO Integer type GetTimeFormatFlags = DWORD lOCALE_NOUSEROVERRIDE :: GetTimeFormatFlags lOCALE_USE_CP_ACP :: GetTimeFormatFlags tIME_NOMINUTESORSECONDS :: GetTimeFormatFlags tIME_NOSECONDS :: GetTimeFormatFlags tIME_NOTIMEMARKER :: GetTimeFormatFlags tIME_FORCE24HOURFORMAT :: GetTimeFormatFlags getTimeFormatEx :: Maybe String -> GetTimeFormatFlags -> Maybe SYSTEMTIME -> Maybe String -> IO String getTimeFormat :: LCID -> GetTimeFormatFlags -> Maybe SYSTEMTIME -> Maybe String -> IO String -- | A collection of FFI declarations for interfacing with Win32 Time API. module System.Win32.WindowsString.Time getTimeFormatEx :: Maybe WindowsString -> GetTimeFormatFlags -> Maybe SYSTEMTIME -> Maybe WindowsString -> IO String getTimeFormat :: LCID -> GetTimeFormatFlags -> Maybe SYSTEMTIME -> Maybe String -> IO WindowsString type GetTimeFormatFlags = DWORD data TimeZoneId TzIdUnknown :: TimeZoneId TzIdStandard :: TimeZoneId TzIdDaylight :: TimeZoneId 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 SYSTEMTIME SYSTEMTIME :: WORD -> SYSTEMTIME [wYear, wMonth, wDayOfWeek, wDay, wHour, wMinute, wSecond, wMilliseconds] :: SYSTEMTIME -> WORD newtype FILETIME FILETIME :: DDWORD -> FILETIME getTickCount :: IO DWORD lOCALE_NOUSEROVERRIDE :: GetTimeFormatFlags lOCALE_USE_CP_ACP :: GetTimeFormatFlags tIME_NOMINUTESORSECONDS :: GetTimeFormatFlags tIME_NOSECONDS :: GetTimeFormatFlags tIME_NOTIMEMARKER :: GetTimeFormatFlags tIME_FORCE24HOURFORMAT :: GetTimeFormatFlags getSystemTime :: IO SYSTEMTIME setSystemTime :: SYSTEMTIME -> IO () getSystemTimeAsFileTime :: IO FILETIME getLocalTime :: IO SYSTEMTIME setLocalTime :: SYSTEMTIME -> IO () getSystemTimeAdjustment :: IO (Maybe (Int, Int)) getLastInputInfo :: IO DWORD getIdleTime :: IO Integer setSystemTimeAdjustment :: Maybe Int -> IO () getTimeZoneInformation :: IO (TimeZoneId, TIME_ZONE_INFORMATION) systemTimeToFileTime :: SYSTEMTIME -> IO FILETIME fileTimeToSystemTime :: FILETIME -> IO SYSTEMTIME getFileTime :: HANDLE -> IO (FILETIME, FILETIME, FILETIME) invalidFileTime :: FILETIME setFileTime :: HANDLE -> Maybe FILETIME -> Maybe FILETIME -> Maybe FILETIME -> IO () fileTimeToLocalFileTime :: FILETIME -> IO FILETIME localFileTimeToFileTime :: FILETIME -> IO FILETIME queryPerformanceFrequency :: IO Integer queryPerformanceCounter :: IO Integer -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.File type AccessMode = UINT gENERIC_NONE :: AccessMode gENERIC_READ :: AccessMode gENERIC_WRITE :: AccessMode gENERIC_EXECUTE :: AccessMode gENERIC_ALL :: AccessMode dELETE :: AccessMode rEAD_CONTROL :: AccessMode wRITE_DAC :: AccessMode wRITE_OWNER :: AccessMode sYNCHRONIZE :: AccessMode sTANDARD_RIGHTS_REQUIRED :: AccessMode sTANDARD_RIGHTS_READ :: AccessMode sTANDARD_RIGHTS_WRITE :: AccessMode sTANDARD_RIGHTS_EXECUTE :: AccessMode sTANDARD_RIGHTS_ALL :: AccessMode sPECIFIC_RIGHTS_ALL :: AccessMode aCCESS_SYSTEM_SECURITY :: AccessMode mAXIMUM_ALLOWED :: AccessMode fILE_ADD_FILE :: AccessMode fILE_ADD_SUBDIRECTORY :: AccessMode fILE_ALL_ACCESS :: AccessMode fILE_APPEND_DATA :: AccessMode fILE_CREATE_PIPE_INSTANCE :: AccessMode fILE_DELETE_CHILD :: AccessMode fILE_EXECUTE :: AccessMode fILE_LIST_DIRECTORY :: AccessMode fILE_READ_ATTRIBUTES :: AccessMode fILE_READ_DATA :: AccessMode fILE_READ_EA :: AccessMode fILE_TRAVERSE :: AccessMode fILE_WRITE_ATTRIBUTES :: AccessMode fILE_WRITE_DATA :: AccessMode fILE_WRITE_EA :: AccessMode type ShareMode = UINT fILE_SHARE_NONE :: ShareMode fILE_SHARE_READ :: ShareMode fILE_SHARE_WRITE :: ShareMode fILE_SHARE_DELETE :: ShareMode type CreateMode = UINT cREATE_NEW :: CreateMode cREATE_ALWAYS :: CreateMode oPEN_EXISTING :: CreateMode oPEN_ALWAYS :: CreateMode tRUNCATE_EXISTING :: CreateMode type FileAttributeOrFlag = UINT fILE_ATTRIBUTE_READONLY :: FileAttributeOrFlag fILE_ATTRIBUTE_HIDDEN :: FileAttributeOrFlag fILE_ATTRIBUTE_SYSTEM :: FileAttributeOrFlag fILE_ATTRIBUTE_DIRECTORY :: FileAttributeOrFlag fILE_ATTRIBUTE_ARCHIVE :: FileAttributeOrFlag fILE_ATTRIBUTE_NORMAL :: FileAttributeOrFlag fILE_ATTRIBUTE_TEMPORARY :: FileAttributeOrFlag fILE_ATTRIBUTE_COMPRESSED :: FileAttributeOrFlag fILE_ATTRIBUTE_REPARSE_POINT :: FileAttributeOrFlag fILE_FLAG_WRITE_THROUGH :: FileAttributeOrFlag fILE_FLAG_OVERLAPPED :: FileAttributeOrFlag fILE_FLAG_NO_BUFFERING :: FileAttributeOrFlag fILE_FLAG_RANDOM_ACCESS :: FileAttributeOrFlag fILE_FLAG_SEQUENTIAL_SCAN :: FileAttributeOrFlag fILE_FLAG_DELETE_ON_CLOSE :: FileAttributeOrFlag fILE_FLAG_BACKUP_SEMANTICS :: FileAttributeOrFlag fILE_FLAG_POSIX_SEMANTICS :: FileAttributeOrFlag sECURITY_ANONYMOUS :: FileAttributeOrFlag sECURITY_IDENTIFICATION :: FileAttributeOrFlag sECURITY_IMPERSONATION :: FileAttributeOrFlag sECURITY_DELEGATION :: FileAttributeOrFlag sECURITY_CONTEXT_TRACKING :: FileAttributeOrFlag sECURITY_EFFECTIVE_ONLY :: FileAttributeOrFlag sECURITY_SQOS_PRESENT :: FileAttributeOrFlag sECURITY_VALID_SQOS_FLAGS :: FileAttributeOrFlag type MoveFileFlag = DWORD mOVEFILE_REPLACE_EXISTING :: MoveFileFlag mOVEFILE_COPY_ALLOWED :: MoveFileFlag mOVEFILE_DELAY_UNTIL_REBOOT :: MoveFileFlag type FilePtrDirection = DWORD fILE_BEGIN :: FilePtrDirection fILE_CURRENT :: FilePtrDirection fILE_END :: FilePtrDirection type DriveType = UINT dRIVE_UNKNOWN :: DriveType dRIVE_NO_ROOT_DIR :: DriveType dRIVE_REMOVABLE :: DriveType dRIVE_FIXED :: DriveType dRIVE_REMOTE :: DriveType dRIVE_CDROM :: DriveType dRIVE_RAMDISK :: DriveType type DefineDosDeviceFlags = DWORD dDD_RAW_TARGET_PATH :: DefineDosDeviceFlags dDD_REMOVE_DEFINITION :: DefineDosDeviceFlags dDD_EXACT_MATCH_ON_REMOVE :: DefineDosDeviceFlags type BinaryType = DWORD sCS_32BIT_BINARY :: BinaryType sCS_DOS_BINARY :: BinaryType sCS_WOW_BINARY :: BinaryType sCS_PIF_BINARY :: BinaryType sCS_POSIX_BINARY :: BinaryType sCS_OS216_BINARY :: BinaryType type FileNotificationFlag = DWORD fILE_NOTIFY_CHANGE_FILE_NAME :: FileNotificationFlag fILE_NOTIFY_CHANGE_DIR_NAME :: FileNotificationFlag fILE_NOTIFY_CHANGE_ATTRIBUTES :: FileNotificationFlag fILE_NOTIFY_CHANGE_SIZE :: FileNotificationFlag fILE_NOTIFY_CHANGE_LAST_WRITE :: FileNotificationFlag fILE_NOTIFY_CHANGE_SECURITY :: FileNotificationFlag type FileType = DWORD fILE_TYPE_UNKNOWN :: FileType fILE_TYPE_DISK :: FileType fILE_TYPE_CHAR :: FileType fILE_TYPE_PIPE :: FileType fILE_TYPE_REMOTE :: FileType type LockMode = DWORD lOCKFILE_EXCLUSIVE_LOCK :: LockMode lOCKFILE_FAIL_IMMEDIATELY :: LockMode data GET_FILEEX_INFO_LEVELS getFileExInfoStandard :: GET_FILEEX_INFO_LEVELS getFileExMaxInfoLevel :: GET_FILEEX_INFO_LEVELS data SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES :: !DWORD -> !LPVOID -> !BOOL -> SECURITY_ATTRIBUTES [nLength] :: SECURITY_ATTRIBUTES -> !DWORD [lpSecurityDescriptor] :: SECURITY_ATTRIBUTES -> !LPVOID [bInheritHandle] :: SECURITY_ATTRIBUTES -> !BOOL type PSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES type LPSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES type MbLPSECURITY_ATTRIBUTES = Maybe LPSECURITY_ATTRIBUTES data BY_HANDLE_FILE_INFORMATION BY_HANDLE_FILE_INFORMATION :: FileAttributeOrFlag -> FILETIME -> DWORD -> DDWORD -> DWORD -> DDWORD -> BY_HANDLE_FILE_INFORMATION [bhfiFileAttributes] :: BY_HANDLE_FILE_INFORMATION -> FileAttributeOrFlag [bhfiCreationTime, bhfiLastAccessTime, bhfiLastWriteTime] :: BY_HANDLE_FILE_INFORMATION -> FILETIME [bhfiVolumeSerialNumber] :: BY_HANDLE_FILE_INFORMATION -> DWORD [bhfiSize] :: BY_HANDLE_FILE_INFORMATION -> DDWORD [bhfiNumberOfLinks] :: BY_HANDLE_FILE_INFORMATION -> DWORD [bhfiFileIndex] :: BY_HANDLE_FILE_INFORMATION -> DDWORD data WIN32_FILE_ATTRIBUTE_DATA WIN32_FILE_ATTRIBUTE_DATA :: DWORD -> FILETIME -> DDWORD -> WIN32_FILE_ATTRIBUTE_DATA [fadFileAttributes] :: WIN32_FILE_ATTRIBUTE_DATA -> DWORD [fadCreationTime, fadLastAccessTime, fadLastWriteTime] :: WIN32_FILE_ATTRIBUTE_DATA -> FILETIME [fadFileSize] :: WIN32_FILE_ATTRIBUTE_DATA -> DDWORD -- | like failIf, but retried on sharing violations. This is necessary for -- many file operations; see -- https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/316609 failIfWithRetry :: (a -> Bool) -> String -> IO a -> IO a failIfWithRetry_ :: (a -> Bool) -> String -> IO a -> IO () failIfFalseWithRetry_ :: String -> IO Bool -> IO () deleteFile :: String -> IO () copyFile :: String -> String -> Bool -> IO () moveFile :: String -> String -> IO () moveFileEx :: String -> Maybe String -> MoveFileFlag -> IO () setCurrentDirectory :: String -> IO () createDirectory :: String -> Maybe LPSECURITY_ATTRIBUTES -> IO () createDirectoryEx :: String -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO () removeDirectory :: String -> IO () getBinaryType :: String -> IO BinaryType -- | Get a unique temporary filename. -- -- Calls GetTempFileNameW. getTempFileName :: String -> String -> Maybe UINT -> IO (String, UINT) createFile :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE -- | Like createFile, but does not use failIfWithRetry. If another process -- has the same file open, this will fail. createFile_NoRetry :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE closeHandle :: HANDLE -> IO () getFileType :: HANDLE -> IO FileType flushFileBuffers :: HANDLE -> IO () setEndOfFile :: HANDLE -> IO () setFileAttributes :: String -> FileAttributeOrFlag -> IO () getFileAttributes :: String -> IO FileAttributeOrFlag getFileAttributesExStandard :: String -> IO WIN32_FILE_ATTRIBUTE_DATA getFileInformationByHandle :: HANDLE -> IO BY_HANDLE_FILE_INFORMATION data OVERLAPPED OVERLAPPED :: ULONG_PTR -> ULONG_PTR -> DWORD -> DWORD -> HANDLE -> OVERLAPPED [ovl_internal] :: OVERLAPPED -> ULONG_PTR [ovl_internalHigh] :: OVERLAPPED -> ULONG_PTR [ovl_offset] :: OVERLAPPED -> DWORD [ovl_offsetHigh] :: OVERLAPPED -> DWORD [ovl_hEvent] :: OVERLAPPED -> HANDLE type LPOVERLAPPED = Ptr OVERLAPPED type MbLPOVERLAPPED = Maybe LPOVERLAPPED win32_ReadFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD win32_WriteFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD setFilePointerEx :: HANDLE -> LARGE_INTEGER -> FilePtrDirection -> IO LARGE_INTEGER findFirstChangeNotification :: String -> Bool -> FileNotificationFlag -> IO HANDLE findNextChangeNotification :: HANDLE -> IO () findCloseChangeNotification :: HANDLE -> IO () data FindData getFindDataFileName :: FindData -> IO FilePath findFirstFile :: String -> IO (HANDLE, FindData) findNextFile :: HANDLE -> FindData -> IO Bool findClose :: HANDLE -> IO () defineDosDevice :: DefineDosDeviceFlags -> String -> Maybe String -> IO () areFileApisANSI :: IO Bool setFileApisToOEM :: IO () setFileApisToANSI :: IO () setHandleCount :: UINT -> IO UINT getLogicalDrives :: IO DWORD getDiskFreeSpace :: Maybe String -> IO (DWORD, DWORD, DWORD, DWORD) setVolumeLabel :: Maybe String -> Maybe String -> IO () -- | Locks a given range in a file handle, To lock an entire file use -- 0xFFFFFFFFFFFFFFFF for size and 0 for offset. lockFile :: HANDLE -> LockMode -> DWORD64 -> DWORD64 -> IO BOOL -- | Unlocks a given range in a file handle, To unlock an entire file use -- 0xFFFFFFFFFFFFFFFF for size and 0 for offset. unlockFile :: HANDLE -> DWORD64 -> DWORD64 -> IO BOOL -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.WindowsString.File deleteFile :: WindowsString -> IO () copyFile :: WindowsString -> WindowsString -> Bool -> IO () moveFile :: WindowsString -> WindowsString -> IO () moveFileEx :: WindowsString -> Maybe WindowsString -> MoveFileFlag -> IO () setCurrentDirectory :: WindowsString -> IO () createDirectory :: WindowsString -> Maybe LPSECURITY_ATTRIBUTES -> IO () createDirectoryEx :: WindowsString -> WindowsString -> Maybe LPSECURITY_ATTRIBUTES -> IO () removeDirectory :: WindowsString -> IO () getBinaryType :: WindowsString -> IO BinaryType createFile :: WindowsString -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE setFileAttributes :: WindowsString -> FileAttributeOrFlag -> IO () getFileAttributes :: WindowsString -> IO FileAttributeOrFlag getFileAttributesExStandard :: WindowsString -> IO WIN32_FILE_ATTRIBUTE_DATA -- | Get a unique temporary filename. -- -- Calls GetTempFileNameW. getTempFileName :: WindowsString -> WindowsString -> Maybe UINT -> IO (WindowsString, UINT) findFirstChangeNotification :: WindowsString -> Bool -> FileNotificationFlag -> IO HANDLE getFindDataFileName :: FindData -> IO WindowsString findFirstFile :: WindowsString -> IO (HANDLE, FindData) defineDosDevice :: DefineDosDeviceFlags -> WindowsString -> Maybe WindowsString -> IO () getDiskFreeSpace :: Maybe WindowsString -> IO (DWORD, DWORD, DWORD, DWORD) setVolumeLabel :: Maybe WindowsString -> Maybe WindowsString -> IO () getFileExInfoStandard :: GET_FILEEX_INFO_LEVELS getFileExMaxInfoLevel :: GET_FILEEX_INFO_LEVELS data FindData type MbLPOVERLAPPED = Maybe LPOVERLAPPED type LPOVERLAPPED = Ptr OVERLAPPED data OVERLAPPED OVERLAPPED :: ULONG_PTR -> ULONG_PTR -> DWORD -> DWORD -> HANDLE -> OVERLAPPED [ovl_internal] :: OVERLAPPED -> ULONG_PTR [ovl_internalHigh] :: OVERLAPPED -> ULONG_PTR [ovl_offset] :: OVERLAPPED -> DWORD [ovl_offsetHigh] :: OVERLAPPED -> DWORD [ovl_hEvent] :: OVERLAPPED -> HANDLE 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 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 type MbLPSECURITY_ATTRIBUTES = Maybe LPSECURITY_ATTRIBUTES type LPSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES type PSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES data SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES :: !DWORD -> !LPVOID -> !BOOL -> SECURITY_ATTRIBUTES [nLength] :: SECURITY_ATTRIBUTES -> !DWORD [lpSecurityDescriptor] :: SECURITY_ATTRIBUTES -> !LPVOID [bInheritHandle] :: SECURITY_ATTRIBUTES -> !BOOL data GET_FILEEX_INFO_LEVELS type LockMode = DWORD type FileType = DWORD type FileNotificationFlag = DWORD type BinaryType = DWORD type DefineDosDeviceFlags = DWORD type DriveType = UINT type FilePtrDirection = DWORD type MoveFileFlag = DWORD type FileAttributeOrFlag = UINT type CreateMode = UINT type ShareMode = UINT type AccessMode = UINT setHandleCount :: UINT -> IO UINT setFileApisToANSI :: IO () setFileApisToOEM :: IO () areFileApisANSI :: IO Bool getFileType :: HANDLE -> IO FileType 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 fILE_SHARE_NONE :: ShareMode fILE_SHARE_READ :: ShareMode fILE_SHARE_WRITE :: ShareMode fILE_SHARE_DELETE :: ShareMode cREATE_NEW :: CreateMode cREATE_ALWAYS :: CreateMode oPEN_EXISTING :: CreateMode oPEN_ALWAYS :: CreateMode tRUNCATE_EXISTING :: CreateMode fILE_ATTRIBUTE_READONLY :: FileAttributeOrFlag fILE_ATTRIBUTE_HIDDEN :: FileAttributeOrFlag fILE_ATTRIBUTE_SYSTEM :: FileAttributeOrFlag fILE_ATTRIBUTE_DIRECTORY :: FileAttributeOrFlag fILE_ATTRIBUTE_ARCHIVE :: FileAttributeOrFlag fILE_ATTRIBUTE_NORMAL :: FileAttributeOrFlag fILE_ATTRIBUTE_TEMPORARY :: FileAttributeOrFlag fILE_ATTRIBUTE_COMPRESSED :: FileAttributeOrFlag fILE_ATTRIBUTE_REPARSE_POINT :: FileAttributeOrFlag fILE_FLAG_WRITE_THROUGH :: FileAttributeOrFlag fILE_FLAG_OVERLAPPED :: FileAttributeOrFlag fILE_FLAG_NO_BUFFERING :: FileAttributeOrFlag fILE_FLAG_RANDOM_ACCESS :: FileAttributeOrFlag fILE_FLAG_SEQUENTIAL_SCAN :: FileAttributeOrFlag fILE_FLAG_DELETE_ON_CLOSE :: FileAttributeOrFlag fILE_FLAG_BACKUP_SEMANTICS :: FileAttributeOrFlag fILE_FLAG_POSIX_SEMANTICS :: FileAttributeOrFlag sECURITY_ANONYMOUS :: FileAttributeOrFlag sECURITY_IDENTIFICATION :: FileAttributeOrFlag sECURITY_IMPERSONATION :: FileAttributeOrFlag sECURITY_DELEGATION :: FileAttributeOrFlag sECURITY_CONTEXT_TRACKING :: FileAttributeOrFlag sECURITY_EFFECTIVE_ONLY :: FileAttributeOrFlag sECURITY_SQOS_PRESENT :: FileAttributeOrFlag sECURITY_VALID_SQOS_FLAGS :: FileAttributeOrFlag mOVEFILE_REPLACE_EXISTING :: MoveFileFlag mOVEFILE_COPY_ALLOWED :: MoveFileFlag mOVEFILE_DELAY_UNTIL_REBOOT :: MoveFileFlag fILE_BEGIN :: FilePtrDirection fILE_CURRENT :: FilePtrDirection fILE_END :: FilePtrDirection dRIVE_UNKNOWN :: DriveType dRIVE_NO_ROOT_DIR :: DriveType dRIVE_REMOVABLE :: DriveType dRIVE_FIXED :: DriveType dRIVE_REMOTE :: DriveType dRIVE_CDROM :: DriveType dRIVE_RAMDISK :: DriveType dDD_RAW_TARGET_PATH :: DefineDosDeviceFlags dDD_REMOVE_DEFINITION :: DefineDosDeviceFlags dDD_EXACT_MATCH_ON_REMOVE :: DefineDosDeviceFlags sCS_32BIT_BINARY :: BinaryType sCS_DOS_BINARY :: BinaryType sCS_WOW_BINARY :: BinaryType sCS_PIF_BINARY :: BinaryType sCS_POSIX_BINARY :: BinaryType sCS_OS216_BINARY :: BinaryType 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 fILE_TYPE_UNKNOWN :: FileType fILE_TYPE_DISK :: FileType fILE_TYPE_CHAR :: FileType fILE_TYPE_PIPE :: FileType fILE_TYPE_REMOTE :: FileType lOCKFILE_EXCLUSIVE_LOCK :: LockMode lOCKFILE_FAIL_IMMEDIATELY :: LockMode -- | like failIf, but retried on sharing violations. This is necessary for -- many file operations; see -- https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/316609 failIfWithRetry :: (a -> Bool) -> String -> IO a -> IO a failIfWithRetry_ :: (a -> Bool) -> String -> IO a -> IO () failIfFalseWithRetry_ :: String -> IO Bool -> IO () -- | Like createFile, but does not use failIfWithRetry. If another process -- has the same file open, this will fail. createFile_NoRetry :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE closeHandle :: HANDLE -> IO () flushFileBuffers :: HANDLE -> IO () setEndOfFile :: HANDLE -> IO () getFileInformationByHandle :: HANDLE -> IO BY_HANDLE_FILE_INFORMATION win32_ReadFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD win32_WriteFile :: HANDLE -> Ptr a -> DWORD -> Maybe LPOVERLAPPED -> IO DWORD setFilePointerEx :: HANDLE -> LARGE_INTEGER -> FilePtrDirection -> IO LARGE_INTEGER findNextChangeNotification :: HANDLE -> IO () findCloseChangeNotification :: HANDLE -> IO () findNextFile :: HANDLE -> FindData -> IO Bool findClose :: HANDLE -> IO () getLogicalDrives :: IO DWORD -- | Locks a given range in a file handle, To lock an entire file use -- 0xFFFFFFFFFFFFFFFF for size and 0 for offset. lockFile :: HANDLE -> LockMode -> DWORD64 -> DWORD64 -> IO BOOL -- | Unlocks a given range in a file handle, To unlock an entire file use -- 0xFFFFFFFFFFFFFFFF for size and 0 for offset. unlockFile :: HANDLE -> DWORD64 -> DWORD64 -> IO BOOL -- | Handling symbolic link using Win32 API. [Vista of later and desktop -- app only] -- -- Note: When using the createSymbolicLink* functions without the -- SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag, you should worry -- about UAC (User Account Control) when use this module's function in -- your application: -- -- -- -- Starting from Windows 10 version 1703 (Creators Update), after -- enabling Developer Mode, users can create symbolic links without -- requiring the Administrator privilege in the current process. Supply a -- True flag in addition to the target and link name to enable -- this behavior. module System.Win32.WindowsString.SymbolicLink type SymbolicLinkFlags = DWORD sYMBOLIC_LINK_FLAG_FILE :: SymbolicLinkFlags sYMBOLIC_LINK_FLAG_DIRECTORY :: SymbolicLinkFlags sYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE :: SymbolicLinkFlags -- | createSymbolicLink* functions don't check that file is exist or not. -- -- NOTE: createSymbolicLink* functions are flipped arguments to -- provide compatibility for Unix, except createSymbolicLink'. -- -- If you want to create symbolic link by Windows way, use -- createSymbolicLink' instead. createSymbolicLink :: WindowsPath -> WindowsPath -> SymbolicLinkFlags -> IO () createSymbolicLink' :: WindowsPath -> WindowsPath -> SymbolicLinkFlags -> IO () createSymbolicLinkFile :: WindowsPath -> WindowsPath -> Bool -> IO () createSymbolicLinkDirectory :: WindowsPath -> WindowsPath -> Bool -> IO () -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.WindowsString.Path filepathRelativePathTo :: WindowsPath -> WindowsPath -> IO WindowsPath pathRelativePathTo :: WindowsPath -> FileAttributeOrFlag -> WindowsPath -> FileAttributeOrFlag -> IO WindowsPath -- | Handling symbolic link using Win32 API. [Vista of later and desktop -- app only] -- -- Note: When using the createSymbolicLink* functions without the -- SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag, you should worry -- about UAC (User Account Control) when use this module's function in -- your application: -- -- -- -- Starting from Windows 10 version 1703 (Creators Update), after -- enabling Developer Mode, users can create symbolic links without -- requiring the Administrator privilege in the current process. Supply a -- True flag in addition to the target and link name to enable -- this behavior. module System.Win32.SymbolicLink type SymbolicLinkFlags = DWORD sYMBOLIC_LINK_FLAG_FILE :: SymbolicLinkFlags sYMBOLIC_LINK_FLAG_DIRECTORY :: SymbolicLinkFlags sYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE :: SymbolicLinkFlags -- | createSymbolicLink* functions don't check that file is exist or not. -- -- NOTE: createSymbolicLink* functions are flipped arguments to -- provide compatibility for Unix, except createSymbolicLink'. -- -- If you want to create symbolic link by Windows way, use -- createSymbolicLink' instead. createSymbolicLink :: FilePath -> FilePath -> SymbolicLinkFlags -> IO () createSymbolicLink' :: FilePath -> FilePath -> SymbolicLinkFlags -> IO () createSymbolicLinkFile :: FilePath -> FilePath -> Bool -> IO () createSymbolicLinkDirectory :: FilePath -> FilePath -> Bool -> IO () -- | Windows Semaphore objects and operations module System.Win32.Semaphore -- | A Windows semaphore. -- -- To obtain a Semaphore, use createSemaphore to create a -- new one, or openSemaphore to open an existing one. -- -- To wait on a semaphore, use waitForSingleObject. -- -- To release resources on a semaphore, use releaseSemaphore. -- -- To free a semaphore, use closeHandle. The semaphore object is -- destroyed when its last handle has been closed. Closing the handle -- does not affect the semaphore count; therefore, be sure to call -- releaseSemaphore before closing the handle or before the -- process terminates. Otherwise, pending wait operations will either -- time out or continue indefinitely, depending on whether a time-out -- value has been specified. newtype Semaphore Semaphore :: HANDLE -> Semaphore [semaphoreHandle] :: Semaphore -> HANDLE type AccessMode = UINT sEMAPHORE_ALL_ACCESS :: AccessMode sEMAPHORE_MODIFY_STATE :: AccessMode -- | Open a Semaphore with the given name, or create a new semaphore -- if no such semaphore exists, with initial count i and maximum -- count m. -- -- The counts must satisfy i >= 0, m > 0 and -- i <= m. -- -- The returned Bool is True if the function found an -- existing semaphore with the given name, in which case a handle to that -- semaphore is returned and the counts are ignored. -- -- Use openSemaphore if you don't want to create a new semaphore. createSemaphore :: Maybe SECURITY_ATTRIBUTES -> LONG -> LONG -> Maybe String -> IO (Semaphore, Bool) -- | Open an existing Semaphore. openSemaphore :: AccessMode -> Bool -> String -> IO Semaphore -- | Increase the count of the Semaphore by the specified amount. -- -- Returns the count of the semaphore before the increase. -- -- Throws an error if the count would exceeded the maximum count of the -- semaphore. releaseSemaphore :: Semaphore -> LONG -> IO LONG -- | A collection of FFI declarations for accessing the Win32 registry. module System.Win32.Registry type HKEY = ForeignHANDLE hKEY_CLASSES_ROOT :: HKEY hKEY_CURRENT_CONFIG :: HKEY hKEY_CURRENT_USER :: HKEY hKEY_LOCAL_MACHINE :: HKEY hKEY_USERS :: HKEY type RegCreateOptions = DWORD rEG_OPTION_NON_VOLATILE :: RegCreateOptions rEG_OPTION_VOLATILE :: RegCreateOptions type REGSAM = Word32 kEY_ALL_ACCESS :: REGSAM kEY_CREATE_LINK :: REGSAM kEY_CREATE_SUB_KEY :: REGSAM kEY_ENUMERATE_SUB_KEYS :: REGSAM kEY_EXECUTE :: REGSAM kEY_NOTIFY :: REGSAM kEY_QUERY_VALUE :: REGSAM kEY_READ :: REGSAM kEY_SET_VALUE :: REGSAM kEY_WRITE :: REGSAM regCloseKey :: HKEY -> IO () regConnectRegistry :: Maybe String -> HKEY -> IO HKEY regCreateKey :: HKEY -> String -> IO HKEY regCreateKeyEx :: HKEY -> String -> Maybe String -> RegCreateOptions -> REGSAM -> Maybe LPSECURITY_ATTRIBUTES -> IO (HKEY, Bool) regDeleteKey :: HKEY -> String -> IO () regDeleteValue :: HKEY -> String -> IO () regEnumKeys :: HKEY -> IO [String] regEnumKeyVals :: HKEY -> IO [(String, String, RegValueType)] regEnumKey :: HKEY -> DWORD -> LPTSTR -> DWORD -> IO (String, Int) regEnumValue :: HKEY -> DWORD -> LPTSTR -> DWORD -> LPBYTE -> DWORD -> IO (RegValueType, String, Int) regFlushKey :: HKEY -> IO () regLoadKey :: HKEY -> String -> String -> IO () regUnLoadKey :: HKEY -> String -> IO () regNotifyChangeKeyValue :: HKEY -> Bool -> RegNotifyOptions -> HANDLE -> Bool -> IO () type RegNotifyOptions = DWORD rEG_NOTIFY_CHANGE_NAME :: RegNotifyOptions rEG_NOTIFY_CHANGE_ATTRIBUTES :: RegNotifyOptions rEG_NOTIFY_CHANGE_LAST_SET :: RegNotifyOptions rEG_NOTIFY_CHANGE_SECURITY :: RegNotifyOptions regOpenKey :: HKEY -> String -> IO HKEY regOpenKeyEx :: HKEY -> String -> REGSAM -> IO HKEY regQueryInfoKey :: HKEY -> IO RegInfoKey data RegInfoKey RegInfoKey :: String -> Int -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Int -> Word32 -> Word32 -> RegInfoKey [class_string] :: RegInfoKey -> String [class_id] :: RegInfoKey -> Int [subkeys] :: RegInfoKey -> Word32 [max_subkey_len] :: RegInfoKey -> Word32 [max_class_len] :: RegInfoKey -> Word32 [values] :: RegInfoKey -> Word32 [max_value_name_len] :: RegInfoKey -> Word32 [max_value_len] :: RegInfoKey -> Word32 [sec_len] :: RegInfoKey -> Int [lastWrite_lo] :: RegInfoKey -> Word32 [lastWrite_hi] :: RegInfoKey -> Word32 regQueryValue :: HKEY -> Maybe String -> IO String -- | Deprecated: Use regQueryValue instead. regQueryValueKey :: HKEY -> Maybe String -> IO String regQueryDefaultValue :: HKEY -> String -> IO String regQueryValueEx :: HKEY -> String -> LPBYTE -> Int -> IO RegValueType regReplaceKey :: HKEY -> Maybe String -> String -> String -> IO () type RegRestoreFlags = DWORD rEG_WHOLE_HIVE_VOLATILE :: RegRestoreFlags rEG_REFRESH_HIVE :: RegRestoreFlags rEG_NO_LAZY_FLUSH :: RegRestoreFlags regRestoreKey :: HKEY -> String -> RegRestoreFlags -> IO () regSaveKey :: HKEY -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO () regGetValue :: HKEY -> Maybe String -> Maybe String -> RegTypeRestriction -> Maybe LPDWORD -> Maybe LPVOID -> Maybe LPDWORD -> IO () type RegTypeRestriction = DWORD rRF_RT_ANY :: RegTypeRestriction rRF_RT_DWORD :: RegTypeRestriction rRF_RT_QWORD :: RegTypeRestriction rRF_RT_REG_BINARY :: RegTypeRestriction rRF_RT_REG_DWORD :: RegTypeRestriction rRF_RT_REG_EXPAND_SZ :: RegTypeRestriction rRF_RT_REG_MULTI_SZ :: RegTypeRestriction rRF_RT_REG_NONE :: RegTypeRestriction rRF_RT_REG_QWORD :: RegTypeRestriction rRF_RT_REG_SZ :: RegTypeRestriction rRF_NOEXPAND :: RegTypeRestriction rRF_ZEROONFAILURE :: RegTypeRestriction rRF_SUBKEY_WOW6464KEY :: RegTypeRestriction rRF_SUBKEY_WOW6432KEY :: RegTypeRestriction regSetValue :: HKEY -> String -> String -> IO () regSetValueEx :: HKEY -> String -> RegValueType -> LPTSTR -> Int -> IO () type RegValueType = DWORD rEG_BINARY :: RegValueType rEG_DWORD :: RegValueType rEG_DWORD_LITTLE_ENDIAN :: RegValueType rEG_DWORD_BIG_ENDIAN :: RegValueType rEG_EXPAND_SZ :: RegValueType rEG_LINK :: RegValueType rEG_MULTI_SZ :: RegValueType rEG_NONE :: RegValueType rEG_RESOURCE_LIST :: RegValueType rEG_SZ :: RegValueType regSetStringValue :: HKEY -> String -> String -> IO () -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.Process iNFINITE :: DWORD sleep :: DWORD -> IO () type ProcessId = DWORD type ProcessHandle = HANDLE type ProcessAccessRights = DWORD pROCESS_ALL_ACCESS :: ProcessAccessRights pROCESS_CREATE_PROCESS :: ProcessAccessRights pROCESS_CREATE_THREAD :: ProcessAccessRights pROCESS_DUP_HANDLE :: ProcessAccessRights pROCESS_QUERY_INFORMATION :: ProcessAccessRights pROCESS_SET_QUOTA :: ProcessAccessRights pROCESS_SET_INFORMATION :: ProcessAccessRights pROCESS_TERMINATE :: ProcessAccessRights pROCESS_VM_OPERATION :: ProcessAccessRights pROCESS_VM_READ :: ProcessAccessRights pROCESS_VM_WRITE :: ProcessAccessRights openProcess :: ProcessAccessRights -> BOOL -> ProcessId -> IO ProcessHandle getProcessId :: ProcessHandle -> IO ProcessId getCurrentProcessId :: IO ProcessId getCurrentProcess :: IO ProcessHandle terminateProcessById :: ProcessId -> IO () type Th32SnapHandle = HANDLE type Th32SnapFlags = DWORD tH32CS_SNAPALL :: Th32SnapFlags tH32CS_SNAPHEAPLIST :: Th32SnapFlags tH32CS_SNAPMODULE :: Th32SnapFlags tH32CS_SNAPMODULE32 :: Th32SnapFlags tH32CS_SNAPMODULE64 :: Th32SnapFlags tH32CS_SNAPPROCESS :: Th32SnapFlags tH32CS_SNAPTHREAD :: Th32SnapFlags -- | ProcessId, number of threads, parent ProcessId, process base priority, -- path of executable file type ProcessEntry32 = (ProcessId, Int, ProcessId, LONG, String) type ModuleEntry32 = (ForeignAddress, Int, HMODULE, String, String) -- | Create a snapshot of specified resources. Call closeHandle to close -- snapshot. createToolhelp32Snapshot :: Th32SnapFlags -> Maybe ProcessId -> IO Th32SnapHandle withTh32Snap :: Th32SnapFlags -> Maybe ProcessId -> (Th32SnapHandle -> IO a) -> IO a -- | Enumerate processes using Process32First and Process32Next th32SnapEnumProcesses :: Th32SnapHandle -> IO [ProcessEntry32] -- | Enumerate modules using Module32First and Module32Next th32SnapEnumModules :: Th32SnapHandle -> IO [ModuleEntry32] -- | Get/Set Foreground Window. module Graphics.Win32.Window.ForegroundWindow getForegroundWindow :: IO HWND -- | Setting Window to Foreground. See: -- https://github.com/haskell/win32/pull/9, -- http://stackoverflow.com/questions/14297146/win32-setforegroundwindow-in-haskell. setForegroundWindow :: HWND -> IO Bool c_SetForegroundWindow :: HWND -> IO Bool -- | Allow other process to set Window to Foreground by using -- setForegroundWindow function. allowSetForegroundWindow :: ProcessId -> IO () c_AllowSetForegroundWindow :: ProcessId -> IO Bool -- | An interface to the Microsoft Windows user interface. See -- http://msdn.microsoft.com/library/ under /User Interface Design -- and Development and then Windows User Interface/ for more -- details of the underlying library. module Graphics.Win32 -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.Path filepathRelativePathTo :: FilePath -> FilePath -> IO FilePath pathRelativePathTo :: FilePath -> FileAttributeOrFlag -> FilePath -> FileAttributeOrFlag -> IO FilePath -- | For full details on the Windows named pipes API see -- https://docs.microsoft.com/en-us/windows/desktop/ipc/named-pipes module System.Win32.NamedPipes -- | Creates an instance of a named pipe and returns a handle for -- subsequent pipe operations. A named pipe server process uses this -- function either to create the first instance of a specific named pipe -- and establish its basic attributes or to create a new instance of an -- existing named pipe. -- -- For full details see -- https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createnamedpipea -- -- To create a named pipe which can be associate with IO completion port -- on needs to pass fILE_FLAG_OVERLAPPED to OpenMode -- argument, e.g. -- --
--   Win32.createNamedPipe pipeName
--                         (pIPE_ACCESS_DUPLEX .|. fILE_FLAG_OVERLAPPED)
--                         (pIPE_TYPE_BYTE .|. pIPE_READMODE_BYTE)
--                         pIPE_UNLIMITED_INSTANCES
--                         512
--                         512
--                         0
--                         NothinROR
--   
createNamedPipe :: String -> OpenMode -> PipeMode -> DWORD -> DWORD -> DWORD -> DWORD -> Maybe LPSECURITY_ATTRIBUTES -> IO HANDLE pIPE_UNLIMITED_INSTANCES :: DWORD type LPSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES -- | The named pipe open mode. -- -- This must specify one of: -- -- -- -- It may also specify: -- -- -- -- It may also specify any combination of: -- -- type OpenMode = UINT pIPE_ACCESS_DUPLEX :: OpenMode pIPE_ACCESS_INBOUND :: OpenMode pIPE_ACCESS_OUTBOUND :: OpenMode fILE_FLAG_OVERLAPPED :: FileAttributeOrFlag -- | The pipe mode. -- -- One of the following type modes can be specified. The same type mode -- must be specified for each instance of the pipe. -- -- -- -- One of the following read modes can be specified. Different instances -- of the same pipe can specify different read modes. -- -- -- -- One of the following wait modes can be specified. Different instances -- of the same pipe can specify different wait modes. -- -- -- -- One of the following remote-client modes can be specified. Different -- instances of the same pipe can specify different remote-client modes. -- -- type PipeMode = UINT pIPE_TYPE_BYTE :: PipeMode pIPE_TYPE_MESSAGE :: PipeMode pIPE_READMODE_BYTE :: PipeMode pIPE_READMODE_MESSAGE :: PipeMode pIPE_WAIT :: PipeMode pIPE_NOWAIT :: PipeMode -- | If the createNamedPipe nMaxInstances parameter is -- pIPE_UNLIMITED_INSTANCES, the number of pipe instances that can -- be created is limited only by the availability of system resources. pIPE_ACCEPT_REMOTE_CLIENTS :: PipeMode pIPE_REJECT_REMOTE_CLIENTS :: PipeMode -- | A reliable connect call, as designed in -- https://docs.microsoft.com/en-us/windows/win32/ipc/named-pipe-client -- -- The arguments are passed directly to createFile. -- -- Note we pick the more familiar posix naming convention, do not confuse -- this function with connectNamedPipe (which corresponds to -- posix accept) connect :: String -> AccessMode -> ShareMode -> Maybe LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> Maybe HANDLE -> IO HANDLE -- | Wait until a named pipe instance is available. If there is no instance -- at hand before the timeout, it will error with -- ERROR_SEM_TIMEOUT, i.e. invalid argument (The semaphore -- timeout period has expired) -- -- It returns True if there is an available instance, subsequent -- createFile might still fail, if another thread will take turn -- and connect before, or if the other end shuts down the name pipe. -- -- It returns False if timeout fired. waitNamedPipe :: String -> TimeOut -> IO Bool -- | Timeout in milliseconds. -- -- type TimeOut = DWORD nMPWAIT_USE_DEFAULT_WAIT :: TimeOut nMPWAIT_WAIT_FOREVER :: TimeOut -- | A function to check if the current terminal uses an old version of -- MinTTY that emulates a TTY. Note, however, that this does not check -- for more recent versions of MinTTY that use the native Windows console -- PTY directly. The old approach (where MinTTY emulates a TTY) sometimes -- requires different approaches to handling keyboard inputs. -- -- Much of this code was originally authored by Phil Ruffwind and the -- git-for-windows project. module System.Win32.MinTTY -- | Returns True if the current process's standard error is -- attached to an emulated MinTTY console (e.g., Cygwin or MSYS that use -- an old version of MinTTY). Returns False otherwise. isMinTTY :: IO Bool -- | Returns True is the given handle is attached to an emulated -- MinTTY console (e.g., Cygwin or MSYS that use an old version of -- MinTTY). Returns False otherwise. isMinTTYHandle :: HANDLE -> IO Bool instance GHC.Show.Show System.Win32.MinTTY.FILE_NAME_INFO instance GHC.Show.Show System.Win32.MinTTY.UNICODE_STRING instance GHC.Show.Show System.Win32.MinTTY.OBJECT_NAME_INFORMATION instance Foreign.Storable.Storable System.Win32.MinTTY.OBJECT_NAME_INFORMATION instance Foreign.Storable.Storable System.Win32.MinTTY.UNICODE_STRING instance Foreign.Storable.Storable System.Win32.MinTTY.FILE_NAME_INFO -- | Handling hard link using Win32 API. [NTFS only] -- -- Note: You should worry about file system type when use this module's -- function in your application: -- -- module System.Win32.WindowsString.HardLink -- | NOTE: createHardLink is flipped arguments to provide -- compatibility for Unix. -- -- If you want to create hard link by Windows way, use -- createHardLink' instead. createHardLink :: WindowsPath -> WindowsPath -> IO () createHardLink' :: WindowsPath -> WindowsPath -> IO () -- | 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: -- -- module System.Win32.HardLink -- | NOTE: createHardLink is flipped arguments to provide -- compatibility for Unix. -- -- If you want to create hard link by Windows way, use -- createHardLink' instead. createHardLink :: FilePath -> FilePath -> IO () createHardLink' :: FilePath -> FilePath -> IO () -- | A collection of FFI declarations for interfacing with Win32 mapped -- files. module System.Win32.FileMapping -- | Maps file fully and returns ForeignPtr and length of the mapped area. -- The mapped file is opened read-only and shared reading. mapFile :: FilePath -> IO (ForeignPtr a, Int) data MappedObject MappedObject :: HANDLE -> HANDLE -> FileMapAccess -> MappedObject -- | Opens an existing file and creates mapping object to it. withMappedFile :: FilePath -> Bool -> Maybe Bool -> (Integer -> MappedObject -> IO a) -> IO a -- | Maps area into memory. withMappedArea :: MappedObject -> Integer -> Int -> (Ptr a -> IO b) -> IO b type ProtectSectionFlags = DWORD sEC_COMMIT :: ProtectSectionFlags sEC_IMAGE :: ProtectSectionFlags sEC_NOCACHE :: ProtectSectionFlags sEC_RESERVE :: ProtectSectionFlags type FileMapAccess = DWORD fILE_MAP_ALL_ACCESS :: FileMapAccess fILE_MAP_COPY :: FileMapAccess fILE_MAP_READ :: FileMapAccess fILE_MAP_WRITE :: FileMapAccess fILE_SHARE_WRITE :: ShareMode createFileMapping :: Maybe HANDLE -> ProtectFlags -> DDWORD -> Maybe String -> IO HANDLE openFileMapping :: FileMapAccess -> BOOL -> Maybe String -> IO HANDLE mapViewOfFileEx :: HANDLE -> FileMapAccess -> DDWORD -> SIZE_T -> Ptr a -> IO (Ptr b) mapViewOfFile :: HANDLE -> FileMapAccess -> DDWORD -> SIZE_T -> IO (Ptr a) unmapViewOfFile :: Ptr a -> IO () -- | A collection of FFI declarations for interfacing with Win32 mapped -- files. module System.Win32.WindowsString.FileMapping -- | Maps file fully and returns ForeignPtr and length of the mapped area. -- The mapped file is opened read-only and shared reading. mapFile :: WindowsPath -> IO (ForeignPtr a, Int) -- | Opens an existing file and creates mapping object to it. withMappedFile :: WindowsPath -> Bool -> Maybe Bool -> (Integer -> MappedObject -> IO a) -> IO a createFileMapping :: Maybe HANDLE -> ProtectFlags -> DDWORD -> Maybe WindowsString -> IO HANDLE openFileMapping :: FileMapAccess -> BOOL -> Maybe WindowsString -> IO HANDLE type FileMapAccess = DWORD type ProtectSectionFlags = DWORD data MappedObject MappedObject :: HANDLE -> HANDLE -> FileMapAccess -> MappedObject sEC_COMMIT :: ProtectSectionFlags sEC_IMAGE :: ProtectSectionFlags sEC_NOCACHE :: ProtectSectionFlags sEC_RESERVE :: ProtectSectionFlags fILE_MAP_ALL_ACCESS :: FileMapAccess fILE_MAP_COPY :: FileMapAccess fILE_MAP_READ :: FileMapAccess fILE_MAP_WRITE :: FileMapAccess fILE_SHARE_WRITE :: ShareMode -- | Maps area into memory. withMappedArea :: MappedObject -> Integer -> Int -> (Ptr a -> IO b) -> IO b mapViewOfFileEx :: HANDLE -> FileMapAccess -> DDWORD -> SIZE_T -> Ptr a -> IO (Ptr b) mapViewOfFile :: HANDLE -> FileMapAccess -> DDWORD -> SIZE_T -> IO (Ptr a) unmapViewOfFile :: Ptr a -> IO () -- | A collection of FFI declarations for interfacing with Win32. module System.Win32.NLS type LOCALE_ENUMPROCEX = LPWSTR -> EnumLocalesFlag -> LPARAM -> IO BOOL type EnumLocalesFlag = DWORD type LocaleTestFlags = DWORD data GUID GUID :: !Word32 -> !Word16 -> !Word16 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> GUID data NLSVERSIONINFOEX NLSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> GUID -> NLSVERSIONINFOEX [dwNLSVersionInfoSize] :: NLSVERSIONINFOEX -> DWORD [dwNLSVersion] :: NLSVERSIONINFOEX -> DWORD [dwDefinedVersion] :: NLSVERSIONINFOEX -> DWORD [dwEffectiveId] :: NLSVERSIONINFOEX -> DWORD [guidCustomVersion] :: NLSVERSIONINFOEX -> GUID type LCMapFlags = DWORD data UnicodeSubsetBitfield UnicodeSubsetBitfield :: !DDWORD -> !DDWORD -> UnicodeSubsetBitfield [usbLow] :: UnicodeSubsetBitfield -> !DDWORD [usbHigh] :: UnicodeSubsetBitfield -> !DDWORD data LOCALESIGNATURE LOCALESIGNATURE :: !UnicodeSubsetBitfield -> !DDWORD -> !DDWORD -> LOCALESIGNATURE [lsUsb] :: LOCALESIGNATURE -> !UnicodeSubsetBitfield [lsCsbDefault] :: LOCALESIGNATURE -> !DDWORD [lsCsbSupported] :: LOCALESIGNATURE -> !DDWORD data LCData -- | Data in the form of a Unicode string. LCTextualData :: !String -> LCData -- | Data in the form of a number. See lOCAL_RETURN_NUMBER and -- LOCAL_I* locate information constants. LCNumericData :: !DWORD -> LCData -- | Data in the fomr of a LOCALESIGNATURE. See -- lOCAL_FONTSIGNATURE locale information constant. LCSignatureData :: !LOCALESIGNATURE -> LCData type LCTYPE = UINT type NLS_FUNCTION = DWORD multiByteToWideChar :: CodePage -> DWORD -> LPCSTR -> CInt -> LPWSTR -> CInt -> IO CInt getOEMCP :: CodePage c_GetSystemDefaultLocaleName :: LPWSTR -> CInt -> IO CInt getSystemDefaultLangID :: LANGID getSystemDefaultLCID :: LCID getThreadLocale :: IO LCID c_GetUserDefaultLocaleName :: LPWSTR -> CInt -> IO CInt getUserDefaultLangID :: LANGID getUserDefaultLCID :: LCID isValidCodePage :: CodePage -> IO Bool c_EnumSystemLocalesEx :: FunPtr LOCALE_ENUMPROCEX -> DWORD -> LPARAM -> LPVOID -> IO Bool mkLOCALE_ENUMPROCEX :: LOCALE_ENUMPROCEX -> IO (FunPtr LOCALE_ENUMPROCEX) isValidLocale :: LCID -> LocaleTestFlags -> IO Bool c_IsValidLocaleName :: LPCWSTR -> IO Bool c_LCMapString :: LCID -> LCMapFlags -> LPCTSTR -> Int -> LPCTSTR -> Int -> IO Int c_LCMapStringEx :: LPCWSTR -> LCMapFlags -> LPCWSTR -> CInt -> LPWSTR -> CInt -> Ptr NLSVERSIONINFOEX -> LPVOID -> LPARAM -> IO CInt c_GetNLSVersionEx :: NLS_FUNCTION -> LPCWSTR -> Ptr NLSVERSIONINFOEX -> IO Bool c_SetLocaleInfo :: LCID -> LCTYPE -> LPCTSTR -> IO Bool c_GetLocaleInfoEx :: LPCWSTR -> LCTYPE -> LPWSTR -> CInt -> IO CInt setThreadLocale :: LCID -> IO () getACP :: IO CodePage convertDefaultLocale :: LCID -> IO LCID lOCALE_SYSTEM_DEFAULT :: LCID lOCALE_USER_DEFAULT :: LCID lOCALE_NEUTRAL :: LCID cP_ACP :: CodePage cP_MACCP :: CodePage cP_OEMCP :: CodePage lOCALE_FONTSIGNATURE :: LCTYPE lOCALE_ICALENDARTYPE :: LCTYPE lOCALE_ICENTURY :: LCTYPE lOCALE_ICOUNTRY :: LCTYPE lOCALE_ICURRDIGITS :: LCTYPE lOCALE_ICURRENCY :: LCTYPE lOCALE_IDATE :: LCTYPE lOCALE_IDAYLZERO :: LCTYPE lOCALE_IDEFAULTANSICODEPAGE :: LCTYPE lOCALE_IDEFAULTCODEPAGE :: LCTYPE lOCALE_IDEFAULTCOUNTRY :: LCTYPE lOCALE_IDEFAULTEBCDICCODEPAGE :: LCTYPE lOCALE_IDEFAULTLANGUAGE :: LCTYPE lOCALE_IDEFAULTMACCODEPAGE :: LCTYPE lOCALE_IDIGITS :: LCTYPE lOCALE_IDIGITSUBSTITUTION :: LCTYPE lOCALE_IFIRSTDAYOFWEEK :: LCTYPE lOCALE_IFIRSTWEEKOFYEAR :: LCTYPE lOCALE_IGEOID :: LCTYPE lOCALE_IINTLCURRDIGITS :: LCTYPE lOCALE_ILANGUAGE :: LCTYPE lOCALE_ILDATE :: LCTYPE lOCALE_ILZERO :: LCTYPE lOCALE_IMEASURE :: LCTYPE lOCALE_IMONLZERO :: LCTYPE lOCALE_INEGCURR :: LCTYPE lOCALE_INEGNUMBER :: LCTYPE lOCALE_INEGSEPBYSPACE :: LCTYPE lOCALE_INEGSIGNPOSN :: LCTYPE lOCALE_INEGSYMPRECEDES :: LCTYPE lOCALE_IOPTIONALCALENDAR :: LCTYPE lOCALE_PAPERSIZE :: LCTYPE lOCALE_IPOSSEPBYSPACE :: LCTYPE lOCALE_IPOSSIGNPOSN :: LCTYPE lOCALE_IPSSYMPRECEDES :: LCTYPE lOCALE_ITIME :: LCTYPE lOCALE_ITIMEMARKPOSN :: LCTYPE lOCALE_ITLZERO :: LCTYPE lOCALE_RETURN_NUMBER :: LCTYPE lOCALE_S1159 :: LCTYPE lOCALE_S2359 :: LCTYPE lOCALE_SABBREVCTRYNAME :: LCTYPE lOCALE_SABBREVDAYNAME1 :: LCTYPE lOCALE_SABBREVDAYNAME2 :: LCTYPE lOCALE_SABBREVDAYNAME3 :: LCTYPE lOCALE_SABBREVDAYNAME4 :: LCTYPE lOCALE_SABBREVDAYNAME5 :: LCTYPE lOCALE_SABBREVDAYNAME6 :: LCTYPE lOCALE_SABBREVDAYNAME7 :: LCTYPE lOCALE_SABBREVLANGNAME :: LCTYPE lOCALE_SABBREVMONTHNAME1 :: LCTYPE lOCALE_SABBREVMONTHNAME2 :: LCTYPE lOCALE_SABBREVMONTHNAME3 :: LCTYPE lOCALE_SABBREVMONTHNAME4 :: LCTYPE lOCALE_SABBREVMONTHNAME5 :: LCTYPE lOCALE_SABBREVMONTHNAME6 :: LCTYPE lOCALE_SABBREVMONTHNAME7 :: LCTYPE lOCALE_SABBREVMONTHNAME8 :: LCTYPE lOCALE_SABBREVMONTHNAME9 :: LCTYPE lOCALE_SABBREVMONTHNAME10 :: LCTYPE lOCALE_SABBREVMONTHNAME11 :: LCTYPE lOCALE_SABBREVMONTHNAME12 :: LCTYPE lOCALE_SABBREVMONTHNAME13 :: LCTYPE lOCALE_SCONSOLEFALLBACKNAME :: LCTYPE lOCALE_SCURRENCY :: LCTYPE -- | Type representing locale data lOCALE_SDATE :: LCTYPE lOCALE_SDAYNAME1 :: LCTYPE lOCALE_SDAYNAME2 :: LCTYPE lOCALE_SDAYNAME3 :: LCTYPE lOCALE_SDAYNAME4 :: LCTYPE lOCALE_SDAYNAME5 :: LCTYPE lOCALE_SDAYNAME6 :: LCTYPE lOCALE_SDAYNAME7 :: LCTYPE lOCALE_SDECIMAL :: LCTYPE lOCALE_SDURATION :: LCTYPE lOCALE_SENGCURRNAME :: LCTYPE lOCALE_SENGLISHCOUNTRYNAME :: LCTYPE lOCALE_SENGLISHLANGUAGENAME :: LCTYPE lOCALE_SGROUPING :: LCTYPE lOCALE_SINTLSYMBOL :: LCTYPE lOCALE_SISO3166CTRYNAME :: LCTYPE -- | Type representing 128-bit Unicode subset bitfields, as the -- base package does include a module exporting a 128-bit -- unsigned integer type. lOCALE_SISO3166CTRYNAME2 :: LCTYPE lOCALE_SISO639LANGNAME :: LCTYPE lOCALE_SISO639LANGNAME2 :: LCTYPE lOCALE_SKEYBOARDSTOINSTALL :: LCTYPE lOCALE_SLIST :: LCTYPE lOCALE_SLONGDATE :: LCTYPE lOCALE_SMONDECIMALSEP :: LCTYPE lOCALE_SMONGROUPING :: LCTYPE lOCALE_SMONTHNAME1 :: LCTYPE lOCALE_SMONTHNAME2 :: LCTYPE lOCALE_SMONTHNAME3 :: LCTYPE lOCALE_SMONTHNAME4 :: LCTYPE lOCALE_SMONTHNAME5 :: LCTYPE lOCALE_SMONTHNAME6 :: LCTYPE lOCALE_SMONTHNAME7 :: LCTYPE lOCALE_SMONTHNAME8 :: LCTYPE lOCALE_SMONTHNAME9 :: LCTYPE lOCALE_SMONTHNAME10 :: LCTYPE lOCALE_SMONTHNAME11 :: LCTYPE lOCALE_SMONTHNAME12 :: LCTYPE lOCALE_SMONTHNAME13 :: LCTYPE lOCALE_SMONTHOUSANDSEP :: LCTYPE lOCALE_SNAME :: LCTYPE lOCALE_SNAN :: LCTYPE lOCALE_SNATIVECOUNTRYNAME :: LCTYPE lOCALE_SNATIVECURRNAME :: LCTYPE lOCALE_SNATIVEDIGITS :: LCTYPE lOCALE_SNEGATIVESIGN :: LCTYPE lOCALE_SNEGINFINITY :: LCTYPE lOCALE_SPARENT :: LCTYPE lOCALE_SPOSINFINITY :: LCTYPE lOCALE_SPOSITIVESIGN :: LCTYPE lOCALE_SSCRIPTS :: LCTYPE lOCALE_SSHORTDATE :: LCTYPE lOCALE_SSHORTESTDAYNAME1 :: LCTYPE lOCALE_SSHORTESTDAYNAME2 :: LCTYPE lOCALE_SSHORTESTDAYNAME3 :: LCTYPE lOCALE_SSHORTESTDAYNAME4 :: LCTYPE lOCALE_SSHORTESTDAYNAME5 :: LCTYPE lOCALE_SSHORTESTDAYNAME6 :: LCTYPE lOCALE_SSHORTESTDAYNAME7 :: LCTYPE lOCALE_SSORTNAME :: LCTYPE lOCALE_STHOUSAND :: LCTYPE lOCALE_STIME :: LCTYPE lOCALE_STIMEFORMAT :: LCTYPE lOCALE_SYEARMONTH :: LCTYPE getLocaleInfoEx :: Maybe String -> LCTYPE -> IO LCData setLocaleInfo :: LCID -> LCTYPE -> String -> IO () lCMAP_BYTEREV :: LCMapFlags lCMAP_FULLWIDTH :: LCMapFlags lCMAP_HALFWIDTH :: LCMapFlags lCMAP_HIRAGANA :: LCMapFlags lCMAP_KATAKANA :: LCMapFlags lCMAP_LINGUISTIC_CASING :: LCMapFlags lCMAP_LOWERCASE :: LCMapFlags lCMAP_SIMPLIFIED_CHINESE :: LCMapFlags lCMAP_SORTKEY :: LCMapFlags lCMAP_TRADITIONAL_CHINESE :: LCMapFlags lCMAP_UPPERCASE :: LCMapFlags lINGUISTIC_IGNORECASE :: LCMapFlags lINGUISTIC_IGNOREDIACRITIC :: LCMapFlags nORM_IGNORECASE :: LCMapFlags nORM_IGNORENONSPACE :: LCMapFlags nORM_IGNOREKANATYPE :: LCMapFlags nORM_IGNORESYMBOLS :: LCMapFlags nORM_IGNOREWIDTH :: LCMapFlags nORM_LINGUISTIC_CASING :: LCMapFlags sORT_STRINGSORT :: LCMapFlags getNLSVersionEx :: Maybe String -> IO NLSVERSIONINFOEX lCMapStringEx :: Maybe String -> LCMapFlags -> String -> NLSVERSIONINFOEX -> IO String lCMapString :: LCID -> LCMapFlags -> String -> Int -> IO String lCID_INSTALLED :: LocaleTestFlags lCID_SUPPORTED :: LocaleTestFlags isValidLocaleName :: Maybe String -> IO Bool lOCALE_ALL :: EnumLocalesFlag lOCALE_ALTERNATE_SORTS :: EnumLocalesFlag lOCALE_REPLACEMENT :: EnumLocalesFlag lOCALE_SUPPLEMENTAL :: EnumLocalesFlag lOCALE_WINDOWS :: EnumLocalesFlag enumSystemLocalesEx :: LOCALE_ENUMPROCEX -> EnumLocalesFlag -> LPARAM -> IO () enumSystemLocalesEx' :: EnumLocalesFlag -> Maybe Bool -> IO [String] lOCALE_NAME_INVARIANT :: Maybe String lOCALE_NAME_SYSTEM_DEFAULT :: Maybe String lOCALE_NAME_USER_DEFAULT :: Maybe String getUserDefaultLocaleName :: IO String lOCALE_NAME_MAX_LENGTH :: CInt -- | Helper function for use with c_GetUserDefaultLocaleName or -- c_GetSystemDefaultLocaleName. See -- getUserDefaultLocaleName and -- getSystemUserDefaultLocaleName. getDefaultLocaleName :: String -> (LPWSTR -> CInt -> IO CInt) -> IO String getSystemDefaultLocaleName :: IO String lANG_NEUTRAL :: PrimaryLANGID lANG_BULGARIAN :: PrimaryLANGID lANG_CHINESE :: PrimaryLANGID lANG_CZECH :: PrimaryLANGID lANG_DANISH :: PrimaryLANGID lANG_GERMAN :: PrimaryLANGID lANG_GREEK :: PrimaryLANGID lANG_ENGLISH :: PrimaryLANGID lANG_SPANISH :: PrimaryLANGID lANG_FINNISH :: PrimaryLANGID lANG_FRENCH :: PrimaryLANGID lANG_HUNGARIAN :: PrimaryLANGID lANG_ICELANDIC :: PrimaryLANGID lANG_ITALIAN :: PrimaryLANGID lANG_JAPANESE :: PrimaryLANGID lANG_KOREAN :: PrimaryLANGID lANG_DUTCH :: PrimaryLANGID lANG_NORWEGIAN :: PrimaryLANGID lANG_POLISH :: PrimaryLANGID lANG_PORTUGUESE :: PrimaryLANGID lANG_ROMANIAN :: PrimaryLANGID lANG_RUSSIAN :: PrimaryLANGID lANG_CROATIAN :: PrimaryLANGID lANG_SLOVAK :: PrimaryLANGID lANG_SWEDISH :: PrimaryLANGID lANG_TURKISH :: PrimaryLANGID lANG_SLOVENIAN :: PrimaryLANGID lANG_ARABIC :: PrimaryLANGID lANG_CATALAN :: PrimaryLANGID lANG_HEBREW :: PrimaryLANGID lANG_SERBIAN :: PrimaryLANGID lANG_ALBANIAN :: PrimaryLANGID lANG_THAI :: PrimaryLANGID lANG_URDU :: PrimaryLANGID lANG_INDONESIAN :: PrimaryLANGID lANG_BELARUSIAN :: PrimaryLANGID lANG_ESTONIAN :: PrimaryLANGID lANG_LATVIAN :: PrimaryLANGID lANG_LITHUANIAN :: PrimaryLANGID lANG_FARSI :: PrimaryLANGID lANG_VIETNAMESE :: PrimaryLANGID lANG_ARMENIAN :: PrimaryLANGID lANG_AZERI :: PrimaryLANGID lANG_BASQUE :: PrimaryLANGID lANG_MACEDONIAN :: PrimaryLANGID lANG_AFRIKAANS :: PrimaryLANGID lANG_GEORGIAN :: PrimaryLANGID lANG_FAEROESE :: PrimaryLANGID lANG_HINDI :: PrimaryLANGID lANG_MALAY :: PrimaryLANGID lANG_KAZAK :: PrimaryLANGID lANG_SWAHILI :: PrimaryLANGID lANG_UZBEK :: PrimaryLANGID lANG_TATAR :: PrimaryLANGID lANG_BENGALI :: PrimaryLANGID lANG_PUNJABI :: PrimaryLANGID lANG_GUJARATI :: PrimaryLANGID lANG_ORIYA :: PrimaryLANGID lANG_TAMIL :: PrimaryLANGID lANG_TELUGU :: PrimaryLANGID lANG_KANNADA :: PrimaryLANGID lANG_MALAYALAM :: PrimaryLANGID lANG_ASSAMESE :: PrimaryLANGID lANG_MARATHI :: PrimaryLANGID lANG_SANSKRIT :: PrimaryLANGID lANG_KONKANI :: PrimaryLANGID lANG_MANIPURI :: PrimaryLANGID lANG_SINDHI :: PrimaryLANGID lANG_KASHMIRI :: PrimaryLANGID lANG_NEPALI :: PrimaryLANGID sORT_DEFAULT :: SortID sORT_JAPANESE_XJIS :: SortID sORT_JAPANESE_UNICODE :: SortID sORT_CHINESE_BIG5 :: SortID sORT_CHINESE_UNICODE :: SortID sORT_KOREAN_KSC :: SortID sORT_KOREAN_UNICODE :: SortID sUBLANG_NEUTRAL :: SubLANGID sUBLANG_DEFAULT :: SubLANGID sUBLANG_SYS_DEFAULT :: SubLANGID sUBLANG_CHINESE_TRADITIONAL :: SubLANGID sUBLANG_CHINESE_SIMPLIFIED :: SubLANGID sUBLANG_CHINESE_HONGKONG :: SubLANGID sUBLANG_CHINESE_SINGAPORE :: SubLANGID sUBLANG_DUTCH :: SubLANGID sUBLANG_DUTCH_BELGIAN :: SubLANGID sUBLANG_ENGLISH_US :: SubLANGID sUBLANG_ENGLISH_UK :: SubLANGID sUBLANG_ENGLISH_AUS :: SubLANGID sUBLANG_ENGLISH_CAN :: SubLANGID sUBLANG_ENGLISH_NZ :: SubLANGID sUBLANG_ENGLISH_EIRE :: SubLANGID sUBLANG_FRENCH :: SubLANGID sUBLANG_FRENCH_BELGIAN :: SubLANGID sUBLANG_FRENCH_CANADIAN :: SubLANGID sUBLANG_FRENCH_SWISS :: SubLANGID sUBLANG_GERMAN :: SubLANGID sUBLANG_GERMAN_SWISS :: SubLANGID sUBLANG_GERMAN_AUSTRIAN :: SubLANGID sUBLANG_ITALIAN :: SubLANGID sUBLANG_ITALIAN_SWISS :: SubLANGID sUBLANG_NORWEGIAN_BOKMAL :: SubLANGID sUBLANG_NORWEGIAN_NYNORSK :: SubLANGID sUBLANG_PORTUGUESE :: SubLANGID sUBLANG_PORTUGUESE_BRAZILIAN :: SubLANGID sUBLANG_SPANISH :: SubLANGID sUBLANG_SPANISH_MEXICAN :: SubLANGID sUBLANG_SPANISH_MODERN :: SubLANGID sUBLANG_ARABIC_SAUDI_ARABIA :: SubLANGID sUBLANG_ARABIC_IRAQ :: SubLANGID sUBLANG_ARABIC_EGYPT :: SubLANGID sUBLANG_ARABIC_LIBYA :: SubLANGID sUBLANG_ARABIC_ALGERIA :: SubLANGID sUBLANG_ARABIC_MOROCCO :: SubLANGID sUBLANG_ARABIC_TUNISIA :: SubLANGID sUBLANG_ARABIC_OMAN :: SubLANGID sUBLANG_ARABIC_YEMEN :: SubLANGID sUBLANG_ARABIC_SYRIA :: SubLANGID sUBLANG_ARABIC_JORDAN :: SubLANGID sUBLANG_ARABIC_LEBANON :: SubLANGID sUBLANG_ARABIC_KUWAIT :: SubLANGID sUBLANG_ARABIC_UAE :: SubLANGID sUBLANG_ARABIC_BAHRAIN :: SubLANGID sUBLANG_ARABIC_QATAR :: SubLANGID sUBLANG_AZERI_CYRILLIC :: SubLANGID sUBLANG_AZERI_LATIN :: SubLANGID sUBLANG_CHINESE_MACAU :: SubLANGID -- | The IO input functions (e.g., getLine) 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 -- getConsoleCP. sUBLANG_ENGLISH_SOUTH_AFRICA :: SubLANGID sUBLANG_ENGLISH_JAMAICA :: SubLANGID sUBLANG_ENGLISH_CARIBBEAN :: SubLANGID sUBLANG_ENGLISH_BELIZE :: SubLANGID sUBLANG_ENGLISH_TRINIDAD :: SubLANGID sUBLANG_ENGLISH_PHILIPPINES :: SubLANGID sUBLANG_ENGLISH_ZIMBABWE :: SubLANGID sUBLANG_FRENCH_LUXEMBOURG :: SubLANGID sUBLANG_FRENCH_MONACO :: SubLANGID sUBLANG_GERMAN_LUXEMBOURG :: SubLANGID sUBLANG_GERMAN_LIECHTENSTEIN :: SubLANGID sUBLANG_KASHMIRI_INDIA :: SubLANGID sUBLANG_KOREAN :: SubLANGID sUBLANG_LITHUANIAN :: SubLANGID sUBLANG_MALAY_MALAYSIA :: SubLANGID sUBLANG_MALAY_BRUNEI_DARUSSALAM :: SubLANGID sUBLANG_NEPALI_INDIA :: SubLANGID sUBLANG_SERBIAN_LATIN :: SubLANGID sUBLANG_SERBIAN_CYRILLIC :: SubLANGID sUBLANG_SPANISH_GUATEMALA :: SubLANGID sUBLANG_SPANISH_COSTA_RICA :: SubLANGID sUBLANG_SPANISH_PANAMA :: SubLANGID sUBLANG_SPANISH_DOMINICAN_REPUBLIC :: SubLANGID sUBLANG_SPANISH_VENEZUELA :: SubLANGID sUBLANG_SPANISH_COLOMBIA :: SubLANGID sUBLANG_SPANISH_PERU :: SubLANGID sUBLANG_SPANISH_ARGENTINA :: SubLANGID sUBLANG_SPANISH_ECUADOR :: SubLANGID sUBLANG_SPANISH_CHILE :: SubLANGID sUBLANG_SPANISH_URUGUAY :: SubLANGID sUBLANG_SPANISH_PARAGUAY :: SubLANGID sUBLANG_SPANISH_BOLIVIA :: SubLANGID sUBLANG_SPANISH_EL_SALVADOR :: SubLANGID sUBLANG_SPANISH_HONDURAS :: SubLANGID sUBLANG_SPANISH_NICARAGUA :: SubLANGID sUBLANG_SPANISH_PUERTO_RICO :: SubLANGID sUBLANG_SWEDISH :: SubLANGID sUBLANG_SWEDISH_FINLAND :: SubLANGID sUBLANG_URDU_PAKISTAN :: SubLANGID sUBLANG_URDU_INDIA :: SubLANGID sUBLANG_UZBEK_LATIN :: SubLANGID sUBLANG_UZBEK_CYRILLIC :: SubLANGID stringToUnicode :: CodePage -> String -> IO String type CodePage = DWORD type LCID = DWORD type LANGID = WORD type SortID = WORD type SubLANGID = WORD type PrimaryLANGID = WORD mAKELCID :: LANGID -> SortID -> LCID lANGIDFROMLCID :: LCID -> LANGID sORTIDFROMLCID :: LCID -> SortID mAKELANGID :: PrimaryLANGID -> SubLANGID -> LANGID pRIMARYLANGID :: LANGID -> PrimaryLANGID sUBLANGID :: LANGID -> SubLANGID instance GHC.Show.Show System.Win32.NLS.UnicodeSubsetBitfield instance GHC.Classes.Eq System.Win32.NLS.UnicodeSubsetBitfield instance GHC.Show.Show System.Win32.NLS.LOCALESIGNATURE instance GHC.Classes.Eq System.Win32.NLS.LOCALESIGNATURE instance GHC.Show.Show System.Win32.NLS.LCData instance GHC.Classes.Eq System.Win32.NLS.LCData instance GHC.Classes.Eq System.Win32.NLS.GUID instance GHC.Show.Show System.Win32.NLS.NLSVERSIONINFOEX instance GHC.Classes.Eq System.Win32.NLS.NLSVERSIONINFOEX instance Foreign.Storable.Storable System.Win32.NLS.NLSVERSIONINFOEX instance GHC.Show.Show System.Win32.NLS.GUID instance Foreign.Storable.Storable System.Win32.NLS.GUID instance Foreign.Storable.Storable System.Win32.NLS.LOCALESIGNATURE instance Foreign.Storable.Storable System.Win32.NLS.UnicodeSubsetBitfield -- | Enocode/Decode mutibyte character using Win32 API. module System.Win32.Encoding getCurrentCodePage :: IO DWORD -- | The System.IO output functions (e.g., putStr) 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 getCurrentCodePage. encodeMultiByte :: CodePage -> String -> String encodeMultiByteIO :: CodePage -> String -> IO String -- | The System.IO input functions (e.g. getLine) 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 -- getCurrentCodePage. decodeMultiByte :: CodePage -> String -> String -- | Because of stringToUnicode is unclear name, we use -- decodeMultiByteIO for alias of stringToUnicode. decodeMultiByteIO :: CodePage -> String -> IO String wideCharToMultiByte :: CodePage -> DWORD -> LPCWSTR -> CInt -> LPSTR -> CInt -> LPCSTR -> LPBOOL -> IO CInt multiByteToWideChar :: CodePage -> DWORD -> LPCSTR -> CInt -> LPWSTR -> CInt -> IO CInt -- | Multimedia API. TODO: provide more functions ... module Media.Win32 type MCIERROR = DWORD c_mciGetErrorString :: MCIERROR -> LPTSTR -> UINT -> IO BOOL c_mciSendString :: LPCTSTR -> LPTSTR -> UINT -> HANDLE -> IO MCIERROR mciSendString :: String -> IO () mciGetErrorString :: MCIERROR -> IO () -- | Version information about your computer. module System.Win32.Info.Version data OSVERSIONINFOEX OSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> String -> WORD -> WORD -> WORD -> ProductType -> OSVERSIONINFOEX [dwMajorVersion] :: OSVERSIONINFOEX -> DWORD [dwMinorVersion] :: OSVERSIONINFOEX -> DWORD [dwBuildNumber] :: OSVERSIONINFOEX -> DWORD [dwPlatformId] :: OSVERSIONINFOEX -> DWORD [szCSDVersion] :: OSVERSIONINFOEX -> String [wServicePackMajor] :: OSVERSIONINFOEX -> WORD [wServicePackMinor] :: OSVERSIONINFOEX -> WORD [wSuiteMask] :: OSVERSIONINFOEX -> WORD [wProductType] :: OSVERSIONINFOEX -> ProductType type POSVERSIONINFOEX = Ptr OSVERSIONINFOEX type LPOSVERSIONINFOEX = Ptr OSVERSIONINFOEX data ProductType VerUnknow :: BYTE -> ProductType VerNTWorkStation :: ProductType VerNTDomainControler :: ProductType VerNTServer :: ProductType getVersionEx :: IO OSVERSIONINFOEX c_GetVersionEx :: LPOSVERSIONINFOEX -> IO BOOL isVistaOrLater :: IO Bool is7OrLater :: IO Bool instance GHC.Classes.Eq System.Win32.Info.Version.ProductType instance GHC.Show.Show System.Win32.Info.Version.ProductType instance GHC.Show.Show System.Win32.Info.Version.OSVERSIONINFOEX instance Foreign.Storable.Storable System.Win32.Info.Version.OSVERSIONINFOEX instance Foreign.Storable.Storable System.Win32.Info.Version.ProductType -- | An FFI binding to the hot key part of the Win32 API. module Graphics.Win32.Window.HotKey type FsModifiers = [FsModifier] type FsModifier = UINT mOD_ALT :: FsModifier mOD_CONTROL :: FsModifier mOD_SHIFT :: FsModifier mOD_WIN :: FsModifier -- | This parameter requires to use Windows 7 or later. mOD_NOREPEAT :: FsModifier wM_HOTKEY :: WindowMessage joinModifiers :: FsModifiers -> FsModifier registerHotKey :: MbHWND -> Int -> FsModifier -> VKey -> IO () c_RegisterHotKey :: HWND -> Int -> UINT -> VKey -> IO BOOL unregisterHotKey :: MbHWND -> Int -> IO () c_UnregisterHotKey :: HWND -> Int -> IO BOOL -- | Information about your computer. module System.Win32.Info.Computer expandEnvironmentStrings :: String -> IO String c_ExpandEnvironmentStrings :: LPCTSTR -> LPTSTR -> DWORD -> IO DWORD getComputerName :: IO String setComputerName :: String -> IO () c_GetComputerName :: LPTSTR -> LPDWORD -> IO Bool c_SetComputerName :: LPTSTR -> IO Bool getSystemMetrics :: SMSetting -> IO Int sM_CMONITORS :: SMSetting sM_IMMENABLED :: SMSetting sM_MOUSEWHEELPRESENT :: SMSetting sM_REMOTESESSION :: SMSetting sM_SAMEDISPLAYFORMAT :: SMSetting sM_XVIRTUALSCREEN :: SMSetting sM_YVIRTUALSCREEN :: SMSetting sM_SERVERR2 :: SMSetting sM_MEDIACENTER :: SMSetting sM_STARTER :: SMSetting sM_TABLETPC :: SMSetting -- | Get user name. See: https://github.com/haskell/win32/issues/8, -- http://lpaste.net/41521 getUserName :: IO String c_GetUserName :: LPTSTR -> LPDWORD -> IO Bool data OSVERSIONINFOEX OSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> String -> WORD -> WORD -> WORD -> ProductType -> OSVERSIONINFOEX [dwMajorVersion] :: OSVERSIONINFOEX -> DWORD [dwMinorVersion] :: OSVERSIONINFOEX -> DWORD [dwBuildNumber] :: OSVERSIONINFOEX -> DWORD [dwPlatformId] :: OSVERSIONINFOEX -> DWORD [szCSDVersion] :: OSVERSIONINFOEX -> String [wServicePackMajor] :: OSVERSIONINFOEX -> WORD [wServicePackMinor] :: OSVERSIONINFOEX -> WORD [wSuiteMask] :: OSVERSIONINFOEX -> WORD [wProductType] :: OSVERSIONINFOEX -> ProductType type POSVERSIONINFOEX = Ptr OSVERSIONINFOEX type LPOSVERSIONINFOEX = Ptr OSVERSIONINFOEX data ProductType VerUnknow :: BYTE -> ProductType VerNTWorkStation :: ProductType VerNTDomainControler :: ProductType VerNTServer :: ProductType getVersionEx :: IO OSVERSIONINFOEX c_GetVersionEx :: LPOSVERSIONINFOEX -> IO BOOL type ProcessorFeature = DWORD isProcessorFeaturePresent :: ProcessorFeature -> IO BOOL pF_3DNOW_INSTRUCTIONS_AVAILABLE :: ProcessorFeature pF_COMPARE_EXCHANGE_DOUBLE :: ProcessorFeature pF_FLOATING_POINT_EMULATED :: ProcessorFeature pF_FLOATING_POINT_PRECISION_ERRATA :: ProcessorFeature pF_MMX_INSTRUCTIONS_AVAILABLE :: ProcessorFeature pF_PAE_ENABLED :: ProcessorFeature pF_RDTSC_INSTRUCTION_AVAILABLE :: ProcessorFeature pF_XMMI_INSTRUCTIONS_AVAILABLE :: ProcessorFeature pF_XMMI64_INSTRUCTIONS_AVAILABLE :: ProcessorFeature -- | A collection of FFI declarations for interfacing with Win32 event -- system between processes. module System.Win32.Event type DuplicateOption = DWORD dUPLICATE_CLOSE_SOURCE :: DuplicateOption dUPLICATE_SAME_ACCESS :: DuplicateOption type AccessMode = UINT eVENT_ALL_ACCESS :: AccessMode eVENT_MODIFY_STATE :: AccessMode type WaitResult = DWORD wAIT_ABANDONED :: WaitResult wAIT_IO_COMPLETION :: WaitResult wAIT_OBJECT_0 :: WaitResult wAIT_TIMEOUT :: WaitResult wAIT_FAILED :: WaitResult openEvent :: AccessMode -> Bool -> String -> IO HANDLE createEvent :: Maybe SECURITY_ATTRIBUTES -> Bool -> Bool -> String -> IO HANDLE duplicateHandle :: HANDLE -> HANDLE -> HANDLE -> AccessMode -> Bool -> DuplicateOption -> IO HANDLE setEvent :: HANDLE -> IO () resetEvent :: HANDLE -> IO () pulseEvent :: HANDLE -> IO () signalObjectAndWait :: HANDLE -> HANDLE -> MilliSeconds -> Bool -> IO WaitResult waitForSingleObject :: HANDLE -> MilliSeconds -> IO WaitResult waitForSingleObjectEx :: HANDLE -> MilliSeconds -> Bool -> IO WaitResult waitForMultipleObjects :: [HANDLE] -> Bool -> MilliSeconds -> IO WaitResult waitForMultipleObjectsEx :: [HANDLE] -> Bool -> MilliSeconds -> Bool -> IO WaitResult -- | Get/Set the title for the current console window. module System.Win32.Console.Title getConsoleTitle :: IO String setConsoleTitle :: String -> IO () -- | Get the handle of the current console window. module System.Win32.Console.HWND -- | Get the handle of the current console window by using window's title. -- See: http://support.microsoft.com/kb/124103 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 sendInput. Use this function to -- support non-list sequence. sendInputPtr :: Int -> Ptr INPUT -> IO UINT makeKeyboardInput :: VKey -> Maybe DWORD -> IO INPUT type PINPUT = Ptr INPUT type LPINPUT = Ptr INPUT data INPUT Mouse :: MOUSEINPUT -> INPUT Keyboard :: KEYBDINPUT -> INPUT OtherHardware :: HARDWAREINPUT -> INPUT type PHARDWAREINPUT = Ptr HARDWAREINPUT data HARDWAREINPUT HARDWAREINPUT :: DWORD -> WORD -> WORD -> HARDWAREINPUT [uMsg] :: HARDWAREINPUT -> DWORD [wParamL] :: HARDWAREINPUT -> WORD [wParamH] :: HARDWAREINPUT -> WORD getMessageExtraInfo :: IO LPARAM setMessageExtraInfo :: LPARAM -> IO LPARAM data MOUSEINPUT type PMOUSEINPUT = Ptr MOUSEINPUT xBUTTON1 :: DWORD xBUTTON2 :: DWORD mOUSEEVENTF_ABSOLUTE :: DWORD mOUSEEVENTF_MOVE :: DWORD mOUSEEVENTF_LEFTDOWN :: DWORD mOUSEEVENTF_LEFTUP :: DWORD mOUSEEVENTF_RIGHTDOWN :: DWORD mOUSEEVENTF_RIGHTUP :: DWORD mOUSEEVENTF_MIDDLEDOWN :: DWORD mOUSEEVENTF_MIDDLEUP :: DWORD mOUSEEVENTF_WHEEL :: DWORD mOUSEEVENTF_XDOWN :: DWORD mOUSEEVENTF_XUP :: DWORD instance GHC.Show.Show System.Win32.Automation.Input.HARDWAREINPUT instance GHC.Show.Show System.Win32.Automation.Input.INPUT instance Foreign.Storable.Storable System.Win32.Automation.Input.INPUT instance Foreign.Storable.Storable System.Win32.Automation.Input.HARDWAREINPUT -- | Provide sendInput function and INPUT types. module System.Win32.Automation -- | An FFI binding to the system part of the Win32 API. module System.Win32 type CodePage = DWORD type LOCALE_ENUMPROCEX = LPWSTR -> EnumLocalesFlag -> LPARAM -> IO BOOL type EnumLocalesFlag = DWORD type LocaleTestFlags = DWORD data GUID GUID :: !Word32 -> !Word16 -> !Word16 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> GUID data NLSVERSIONINFOEX NLSVERSIONINFOEX :: DWORD -> DWORD -> DWORD -> DWORD -> GUID -> NLSVERSIONINFOEX [dwNLSVersionInfoSize] :: NLSVERSIONINFOEX -> DWORD [dwNLSVersion] :: NLSVERSIONINFOEX -> DWORD [dwDefinedVersion] :: NLSVERSIONINFOEX -> DWORD [dwEffectiveId] :: NLSVERSIONINFOEX -> DWORD [guidCustomVersion] :: NLSVERSIONINFOEX -> GUID type LCMapFlags = DWORD data UnicodeSubsetBitfield UnicodeSubsetBitfield :: !DDWORD -> !DDWORD -> UnicodeSubsetBitfield [usbLow] :: UnicodeSubsetBitfield -> !DDWORD [usbHigh] :: UnicodeSubsetBitfield -> !DDWORD data LOCALESIGNATURE LOCALESIGNATURE :: !UnicodeSubsetBitfield -> !DDWORD -> !DDWORD -> LOCALESIGNATURE [lsUsb] :: LOCALESIGNATURE -> !UnicodeSubsetBitfield [lsCsbDefault] :: LOCALESIGNATURE -> !DDWORD [lsCsbSupported] :: LOCALESIGNATURE -> !DDWORD data LCData -- | Data in the form of a Unicode string. LCTextualData :: !String -> LCData -- | Data in the form of a number. See lOCAL_RETURN_NUMBER and -- LOCAL_I* locate information constants. LCNumericData :: !DWORD -> LCData -- | Data in the fomr of a LOCALESIGNATURE. See -- lOCAL_FONTSIGNATURE locale information constant. LCSignatureData :: !LOCALESIGNATURE -> LCData type LCTYPE = UINT type NLS_FUNCTION = DWORD multiByteToWideChar :: CodePage -> DWORD -> LPCSTR -> CInt -> LPWSTR -> CInt -> IO CInt getOEMCP :: CodePage c_GetSystemDefaultLocaleName :: LPWSTR -> CInt -> IO CInt getSystemDefaultLangID :: LANGID getSystemDefaultLCID :: LCID getThreadLocale :: IO LCID c_GetUserDefaultLocaleName :: LPWSTR -> CInt -> IO CInt getUserDefaultLangID :: LANGID getUserDefaultLCID :: LCID isValidCodePage :: CodePage -> IO Bool c_EnumSystemLocalesEx :: FunPtr LOCALE_ENUMPROCEX -> DWORD -> LPARAM -> LPVOID -> IO Bool mkLOCALE_ENUMPROCEX :: LOCALE_ENUMPROCEX -> IO (FunPtr LOCALE_ENUMPROCEX) isValidLocale :: LCID -> LocaleTestFlags -> IO Bool c_IsValidLocaleName :: LPCWSTR -> IO Bool c_LCMapString :: LCID -> LCMapFlags -> LPCTSTR -> Int -> LPCTSTR -> Int -> IO Int c_LCMapStringEx :: LPCWSTR -> LCMapFlags -> LPCWSTR -> CInt -> LPWSTR -> CInt -> Ptr NLSVERSIONINFOEX -> LPVOID -> LPARAM -> IO CInt c_GetNLSVersionEx :: NLS_FUNCTION -> LPCWSTR -> Ptr NLSVERSIONINFOEX -> IO Bool c_SetLocaleInfo :: LCID -> LCTYPE -> LPCTSTR -> IO Bool c_GetLocaleInfoEx :: LPCWSTR -> LCTYPE -> LPWSTR -> CInt -> IO CInt setThreadLocale :: LCID -> IO () getACP :: IO CodePage convertDefaultLocale :: LCID -> IO LCID lOCALE_SYSTEM_DEFAULT :: LCID lOCALE_USER_DEFAULT :: LCID lOCALE_NEUTRAL :: LCID cP_ACP :: CodePage cP_MACCP :: CodePage cP_OEMCP :: CodePage lOCALE_FONTSIGNATURE :: LCTYPE lOCALE_ICALENDARTYPE :: LCTYPE lOCALE_ICENTURY :: LCTYPE lOCALE_ICOUNTRY :: LCTYPE lOCALE_ICURRDIGITS :: LCTYPE lOCALE_ICURRENCY :: LCTYPE lOCALE_IDATE :: LCTYPE lOCALE_IDAYLZERO :: LCTYPE lOCALE_IDEFAULTANSICODEPAGE :: LCTYPE lOCALE_IDEFAULTCODEPAGE :: LCTYPE lOCALE_IDEFAULTCOUNTRY :: LCTYPE lOCALE_IDEFAULTEBCDICCODEPAGE :: LCTYPE lOCALE_IDEFAULTLANGUAGE :: LCTYPE lOCALE_IDEFAULTMACCODEPAGE :: LCTYPE lOCALE_IDIGITS :: LCTYPE lOCALE_IDIGITSUBSTITUTION :: LCTYPE lOCALE_IFIRSTDAYOFWEEK :: LCTYPE lOCALE_IFIRSTWEEKOFYEAR :: LCTYPE lOCALE_IGEOID :: LCTYPE lOCALE_IINTLCURRDIGITS :: LCTYPE lOCALE_ILANGUAGE :: LCTYPE lOCALE_ILDATE :: LCTYPE lOCALE_ILZERO :: LCTYPE lOCALE_IMEASURE :: LCTYPE lOCALE_IMONLZERO :: LCTYPE lOCALE_INEGCURR :: LCTYPE lOCALE_INEGNUMBER :: LCTYPE lOCALE_INEGSEPBYSPACE :: LCTYPE lOCALE_INEGSIGNPOSN :: LCTYPE lOCALE_INEGSYMPRECEDES :: LCTYPE lOCALE_IOPTIONALCALENDAR :: LCTYPE lOCALE_PAPERSIZE :: LCTYPE lOCALE_IPOSSEPBYSPACE :: LCTYPE lOCALE_IPOSSIGNPOSN :: LCTYPE lOCALE_IPSSYMPRECEDES :: LCTYPE lOCALE_ITIME :: LCTYPE lOCALE_ITIMEMARKPOSN :: LCTYPE lOCALE_ITLZERO :: LCTYPE lOCALE_RETURN_NUMBER :: LCTYPE lOCALE_S1159 :: LCTYPE lOCALE_S2359 :: LCTYPE lOCALE_SABBREVCTRYNAME :: LCTYPE lOCALE_SABBREVDAYNAME1 :: LCTYPE lOCALE_SABBREVDAYNAME2 :: LCTYPE lOCALE_SABBREVDAYNAME3 :: LCTYPE lOCALE_SABBREVDAYNAME4 :: LCTYPE lOCALE_SABBREVDAYNAME5 :: LCTYPE lOCALE_SABBREVDAYNAME6 :: LCTYPE lOCALE_SABBREVDAYNAME7 :: LCTYPE lOCALE_SABBREVLANGNAME :: LCTYPE lOCALE_SABBREVMONTHNAME1 :: LCTYPE lOCALE_SABBREVMONTHNAME2 :: LCTYPE lOCALE_SABBREVMONTHNAME3 :: LCTYPE lOCALE_SABBREVMONTHNAME4 :: LCTYPE lOCALE_SABBREVMONTHNAME5 :: LCTYPE lOCALE_SABBREVMONTHNAME6 :: LCTYPE lOCALE_SABBREVMONTHNAME7 :: LCTYPE lOCALE_SABBREVMONTHNAME8 :: LCTYPE lOCALE_SABBREVMONTHNAME9 :: LCTYPE lOCALE_SABBREVMONTHNAME10 :: LCTYPE lOCALE_SABBREVMONTHNAME11 :: LCTYPE lOCALE_SABBREVMONTHNAME12 :: LCTYPE lOCALE_SABBREVMONTHNAME13 :: LCTYPE lOCALE_SCONSOLEFALLBACKNAME :: LCTYPE lOCALE_SCURRENCY :: LCTYPE -- | Type representing locale data lOCALE_SDATE :: LCTYPE lOCALE_SDAYNAME1 :: LCTYPE lOCALE_SDAYNAME2 :: LCTYPE lOCALE_SDAYNAME3 :: LCTYPE lOCALE_SDAYNAME4 :: LCTYPE lOCALE_SDAYNAME5 :: LCTYPE lOCALE_SDAYNAME6 :: LCTYPE lOCALE_SDAYNAME7 :: LCTYPE lOCALE_SDECIMAL :: LCTYPE lOCALE_SDURATION :: LCTYPE lOCALE_SENGCURRNAME :: LCTYPE lOCALE_SENGLISHCOUNTRYNAME :: LCTYPE lOCALE_SENGLISHLANGUAGENAME :: LCTYPE lOCALE_SGROUPING :: LCTYPE lOCALE_SINTLSYMBOL :: LCTYPE lOCALE_SISO3166CTRYNAME :: LCTYPE -- | Type representing 128-bit Unicode subset bitfields, as the -- base package does include a module exporting a 128-bit -- unsigned integer type. lOCALE_SISO3166CTRYNAME2 :: LCTYPE lOCALE_SISO639LANGNAME :: LCTYPE lOCALE_SISO639LANGNAME2 :: LCTYPE lOCALE_SKEYBOARDSTOINSTALL :: LCTYPE lOCALE_SLIST :: LCTYPE lOCALE_SLONGDATE :: LCTYPE lOCALE_SMONDECIMALSEP :: LCTYPE lOCALE_SMONGROUPING :: LCTYPE lOCALE_SMONTHNAME1 :: LCTYPE lOCALE_SMONTHNAME2 :: LCTYPE lOCALE_SMONTHNAME3 :: LCTYPE lOCALE_SMONTHNAME4 :: LCTYPE lOCALE_SMONTHNAME5 :: LCTYPE lOCALE_SMONTHNAME6 :: LCTYPE lOCALE_SMONTHNAME7 :: LCTYPE lOCALE_SMONTHNAME8 :: LCTYPE lOCALE_SMONTHNAME9 :: LCTYPE lOCALE_SMONTHNAME10 :: LCTYPE lOCALE_SMONTHNAME11 :: LCTYPE lOCALE_SMONTHNAME12 :: LCTYPE lOCALE_SMONTHNAME13 :: LCTYPE lOCALE_SMONTHOUSANDSEP :: LCTYPE lOCALE_SNAME :: LCTYPE lOCALE_SNAN :: LCTYPE lOCALE_SNATIVECOUNTRYNAME :: LCTYPE lOCALE_SNATIVECURRNAME :: LCTYPE lOCALE_SNATIVEDIGITS :: LCTYPE lOCALE_SNEGATIVESIGN :: LCTYPE lOCALE_SNEGINFINITY :: LCTYPE lOCALE_SPARENT :: LCTYPE lOCALE_SPOSINFINITY :: LCTYPE lOCALE_SPOSITIVESIGN :: LCTYPE lOCALE_SSCRIPTS :: LCTYPE lOCALE_SSHORTDATE :: LCTYPE lOCALE_SSHORTESTDAYNAME1 :: LCTYPE lOCALE_SSHORTESTDAYNAME2 :: LCTYPE lOCALE_SSHORTESTDAYNAME3 :: LCTYPE lOCALE_SSHORTESTDAYNAME4 :: LCTYPE lOCALE_SSHORTESTDAYNAME5 :: LCTYPE lOCALE_SSHORTESTDAYNAME6 :: LCTYPE lOCALE_SSHORTESTDAYNAME7 :: LCTYPE lOCALE_SSORTNAME :: LCTYPE lOCALE_STHOUSAND :: LCTYPE lOCALE_STIME :: LCTYPE lOCALE_STIMEFORMAT :: LCTYPE lOCALE_SYEARMONTH :: LCTYPE getLocaleInfoEx :: Maybe String -> LCTYPE -> IO LCData setLocaleInfo :: LCID -> LCTYPE -> String -> IO () lCMAP_BYTEREV :: LCMapFlags lCMAP_FULLWIDTH :: LCMapFlags lCMAP_HALFWIDTH :: LCMapFlags lCMAP_HIRAGANA :: LCMapFlags lCMAP_KATAKANA :: LCMapFlags lCMAP_LINGUISTIC_CASING :: LCMapFlags lCMAP_LOWERCASE :: LCMapFlags lCMAP_SIMPLIFIED_CHINESE :: LCMapFlags lCMAP_SORTKEY :: LCMapFlags lCMAP_TRADITIONAL_CHINESE :: LCMapFlags lCMAP_UPPERCASE :: LCMapFlags lINGUISTIC_IGNORECASE :: LCMapFlags lINGUISTIC_IGNOREDIACRITIC :: LCMapFlags nORM_IGNORECASE :: LCMapFlags nORM_IGNORENONSPACE :: LCMapFlags nORM_IGNOREKANATYPE :: LCMapFlags nORM_IGNORESYMBOLS :: LCMapFlags nORM_IGNOREWIDTH :: LCMapFlags nORM_LINGUISTIC_CASING :: LCMapFlags sORT_STRINGSORT :: LCMapFlags getNLSVersionEx :: Maybe String -> IO NLSVERSIONINFOEX lCMapStringEx :: Maybe String -> LCMapFlags -> String -> NLSVERSIONINFOEX -> IO String lCMapString :: LCID -> LCMapFlags -> String -> Int -> IO String lCID_INSTALLED :: LocaleTestFlags lCID_SUPPORTED :: LocaleTestFlags isValidLocaleName :: Maybe String -> IO Bool lOCALE_ALL :: EnumLocalesFlag lOCALE_ALTERNATE_SORTS :: EnumLocalesFlag lOCALE_REPLACEMENT :: EnumLocalesFlag lOCALE_SUPPLEMENTAL :: EnumLocalesFlag lOCALE_WINDOWS :: EnumLocalesFlag enumSystemLocalesEx :: LOCALE_ENUMPROCEX -> EnumLocalesFlag -> LPARAM -> IO () enumSystemLocalesEx' :: EnumLocalesFlag -> Maybe Bool -> IO [String] lOCALE_NAME_INVARIANT :: Maybe String lOCALE_NAME_SYSTEM_DEFAULT :: Maybe String lOCALE_NAME_USER_DEFAULT :: Maybe String getUserDefaultLocaleName :: IO String lOCALE_NAME_MAX_LENGTH :: CInt -- | Helper function for use with c_GetUserDefaultLocaleName or -- c_GetSystemDefaultLocaleName. See -- getUserDefaultLocaleName and -- getSystemUserDefaultLocaleName. getDefaultLocaleName :: String -> (LPWSTR -> CInt -> IO CInt) -> IO String getSystemDefaultLocaleName :: IO String lANG_NEUTRAL :: PrimaryLANGID lANG_BULGARIAN :: PrimaryLANGID lANG_CHINESE :: PrimaryLANGID lANG_CZECH :: PrimaryLANGID lANG_DANISH :: PrimaryLANGID lANG_GERMAN :: PrimaryLANGID lANG_GREEK :: PrimaryLANGID lANG_ENGLISH :: PrimaryLANGID lANG_SPANISH :: PrimaryLANGID lANG_FINNISH :: PrimaryLANGID lANG_FRENCH :: PrimaryLANGID lANG_HUNGARIAN :: PrimaryLANGID lANG_ICELANDIC :: PrimaryLANGID lANG_ITALIAN :: PrimaryLANGID lANG_JAPANESE :: PrimaryLANGID lANG_KOREAN :: PrimaryLANGID lANG_DUTCH :: PrimaryLANGID lANG_NORWEGIAN :: PrimaryLANGID lANG_POLISH :: PrimaryLANGID lANG_PORTUGUESE :: PrimaryLANGID lANG_ROMANIAN :: PrimaryLANGID lANG_RUSSIAN :: PrimaryLANGID lANG_CROATIAN :: PrimaryLANGID lANG_SLOVAK :: PrimaryLANGID lANG_SWEDISH :: PrimaryLANGID lANG_TURKISH :: PrimaryLANGID lANG_SLOVENIAN :: PrimaryLANGID lANG_ARABIC :: PrimaryLANGID lANG_CATALAN :: PrimaryLANGID lANG_HEBREW :: PrimaryLANGID lANG_SERBIAN :: PrimaryLANGID lANG_ALBANIAN :: PrimaryLANGID lANG_THAI :: PrimaryLANGID lANG_URDU :: PrimaryLANGID lANG_INDONESIAN :: PrimaryLANGID lANG_BELARUSIAN :: PrimaryLANGID lANG_ESTONIAN :: PrimaryLANGID lANG_LATVIAN :: PrimaryLANGID lANG_LITHUANIAN :: PrimaryLANGID lANG_FARSI :: PrimaryLANGID lANG_VIETNAMESE :: PrimaryLANGID lANG_ARMENIAN :: PrimaryLANGID lANG_AZERI :: PrimaryLANGID lANG_BASQUE :: PrimaryLANGID lANG_MACEDONIAN :: PrimaryLANGID lANG_AFRIKAANS :: PrimaryLANGID lANG_GEORGIAN :: PrimaryLANGID lANG_FAEROESE :: PrimaryLANGID lANG_HINDI :: PrimaryLANGID lANG_MALAY :: PrimaryLANGID lANG_KAZAK :: PrimaryLANGID lANG_SWAHILI :: PrimaryLANGID lANG_UZBEK :: PrimaryLANGID lANG_TATAR :: PrimaryLANGID lANG_BENGALI :: PrimaryLANGID lANG_PUNJABI :: PrimaryLANGID lANG_GUJARATI :: PrimaryLANGID lANG_ORIYA :: PrimaryLANGID lANG_TAMIL :: PrimaryLANGID lANG_TELUGU :: PrimaryLANGID lANG_KANNADA :: PrimaryLANGID lANG_MALAYALAM :: PrimaryLANGID lANG_ASSAMESE :: PrimaryLANGID lANG_MARATHI :: PrimaryLANGID lANG_SANSKRIT :: PrimaryLANGID lANG_KONKANI :: PrimaryLANGID lANG_MANIPURI :: PrimaryLANGID lANG_SINDHI :: PrimaryLANGID lANG_KASHMIRI :: PrimaryLANGID lANG_NEPALI :: PrimaryLANGID sORT_DEFAULT :: SortID sORT_JAPANESE_XJIS :: SortID sORT_JAPANESE_UNICODE :: SortID sORT_CHINESE_BIG5 :: SortID sORT_CHINESE_UNICODE :: SortID sORT_KOREAN_KSC :: SortID sORT_KOREAN_UNICODE :: SortID sUBLANG_NEUTRAL :: SubLANGID sUBLANG_DEFAULT :: SubLANGID sUBLANG_SYS_DEFAULT :: SubLANGID sUBLANG_CHINESE_TRADITIONAL :: SubLANGID sUBLANG_CHINESE_SIMPLIFIED :: SubLANGID sUBLANG_CHINESE_HONGKONG :: SubLANGID sUBLANG_CHINESE_SINGAPORE :: SubLANGID sUBLANG_DUTCH :: SubLANGID sUBLANG_DUTCH_BELGIAN :: SubLANGID sUBLANG_ENGLISH_US :: SubLANGID sUBLANG_ENGLISH_UK :: SubLANGID sUBLANG_ENGLISH_AUS :: SubLANGID sUBLANG_ENGLISH_CAN :: SubLANGID sUBLANG_ENGLISH_NZ :: SubLANGID sUBLANG_ENGLISH_EIRE :: SubLANGID sUBLANG_FRENCH :: SubLANGID sUBLANG_FRENCH_BELGIAN :: SubLANGID sUBLANG_FRENCH_CANADIAN :: SubLANGID sUBLANG_FRENCH_SWISS :: SubLANGID sUBLANG_GERMAN :: SubLANGID sUBLANG_GERMAN_SWISS :: SubLANGID sUBLANG_GERMAN_AUSTRIAN :: SubLANGID sUBLANG_ITALIAN :: SubLANGID sUBLANG_ITALIAN_SWISS :: SubLANGID sUBLANG_NORWEGIAN_BOKMAL :: SubLANGID sUBLANG_NORWEGIAN_NYNORSK :: SubLANGID sUBLANG_PORTUGUESE :: SubLANGID sUBLANG_PORTUGUESE_BRAZILIAN :: SubLANGID sUBLANG_SPANISH :: SubLANGID sUBLANG_SPANISH_MEXICAN :: SubLANGID sUBLANG_SPANISH_MODERN :: SubLANGID sUBLANG_ARABIC_SAUDI_ARABIA :: SubLANGID sUBLANG_ARABIC_IRAQ :: SubLANGID sUBLANG_ARABIC_EGYPT :: SubLANGID sUBLANG_ARABIC_LIBYA :: SubLANGID sUBLANG_ARABIC_ALGERIA :: SubLANGID sUBLANG_ARABIC_MOROCCO :: SubLANGID sUBLANG_ARABIC_TUNISIA :: SubLANGID sUBLANG_ARABIC_OMAN :: SubLANGID sUBLANG_ARABIC_YEMEN :: SubLANGID sUBLANG_ARABIC_SYRIA :: SubLANGID sUBLANG_ARABIC_JORDAN :: SubLANGID sUBLANG_ARABIC_LEBANON :: SubLANGID sUBLANG_ARABIC_KUWAIT :: SubLANGID sUBLANG_ARABIC_UAE :: SubLANGID sUBLANG_ARABIC_BAHRAIN :: SubLANGID sUBLANG_ARABIC_QATAR :: SubLANGID sUBLANG_AZERI_CYRILLIC :: SubLANGID sUBLANG_AZERI_LATIN :: SubLANGID sUBLANG_CHINESE_MACAU :: SubLANGID -- | The IO input functions (e.g., getLine) 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 -- getConsoleCP. sUBLANG_ENGLISH_SOUTH_AFRICA :: SubLANGID sUBLANG_ENGLISH_JAMAICA :: SubLANGID sUBLANG_ENGLISH_CARIBBEAN :: SubLANGID sUBLANG_ENGLISH_BELIZE :: SubLANGID sUBLANG_ENGLISH_TRINIDAD :: SubLANGID sUBLANG_ENGLISH_PHILIPPINES :: SubLANGID sUBLANG_ENGLISH_ZIMBABWE :: SubLANGID sUBLANG_FRENCH_LUXEMBOURG :: SubLANGID sUBLANG_FRENCH_MONACO :: SubLANGID sUBLANG_GERMAN_LUXEMBOURG :: SubLANGID sUBLANG_GERMAN_LIECHTENSTEIN :: SubLANGID sUBLANG_KASHMIRI_INDIA :: SubLANGID sUBLANG_KOREAN :: SubLANGID sUBLANG_LITHUANIAN :: SubLANGID sUBLANG_MALAY_MALAYSIA :: SubLANGID sUBLANG_MALAY_BRUNEI_DARUSSALAM :: SubLANGID sUBLANG_NEPALI_INDIA :: SubLANGID sUBLANG_SERBIAN_LATIN :: SubLANGID sUBLANG_SERBIAN_CYRILLIC :: SubLANGID sUBLANG_SPANISH_GUATEMALA :: SubLANGID sUBLANG_SPANISH_COSTA_RICA :: SubLANGID sUBLANG_SPANISH_PANAMA :: SubLANGID sUBLANG_SPANISH_DOMINICAN_REPUBLIC :: SubLANGID sUBLANG_SPANISH_VENEZUELA :: SubLANGID sUBLANG_SPANISH_COLOMBIA :: SubLANGID sUBLANG_SPANISH_PERU :: SubLANGID sUBLANG_SPANISH_ARGENTINA :: SubLANGID sUBLANG_SPANISH_ECUADOR :: SubLANGID sUBLANG_SPANISH_CHILE :: SubLANGID sUBLANG_SPANISH_URUGUAY :: SubLANGID sUBLANG_SPANISH_PARAGUAY :: SubLANGID sUBLANG_SPANISH_BOLIVIA :: SubLANGID sUBLANG_SPANISH_EL_SALVADOR :: SubLANGID sUBLANG_SPANISH_HONDURAS :: SubLANGID sUBLANG_SPANISH_NICARAGUA :: SubLANGID sUBLANG_SPANISH_PUERTO_RICO :: SubLANGID sUBLANG_SWEDISH :: SubLANGID sUBLANG_SWEDISH_FINLAND :: SubLANGID sUBLANG_URDU_PAKISTAN :: SubLANGID sUBLANG_URDU_INDIA :: SubLANGID sUBLANG_UZBEK_LATIN :: SubLANGID sUBLANG_UZBEK_CYRILLIC :: SubLANGID stringToUnicode :: CodePage -> String -> IO String 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 tryWithoutNull :: String -> (LPTSTR -> UINT -> IO UINT) -> UINT -> IO String try' :: Storable a => String -> (Ptr a -> PDWORD -> IO BOOL) -> DWORD -> IO [a] -- | Support for API calls that return the required size, in characters -- including a null character, of the buffer when passed a buffer size of -- zero. trySized :: String -> (LPTSTR -> CInt -> IO CInt) -> IO String -- | See also: maybePeek function. peekMaybe :: Storable a => Ptr a -> IO (Maybe a) -- | See also: maybeWith function. withMaybe :: Storable a => Maybe a -> (Ptr a -> IO b) -> IO b -- | Translate from a Windows API day, month, year, and era format picture -- to the closest corresponding format string used by formatTime. fromDateFormatPicture :: String -> Maybe String -- | Translate from a Windows API hours, minute, and second format picture -- to the closest corresponding format string used by formatTime. fromTimeFormatPicture :: String -> Maybe String