Copyright | (c) Daan Leijen <leijen@fwi.uva.nl> Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 Sigbjorn Finne <sigbjorn.finne@gmail.com> 2000-2009 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | Sigbjorn Finne <sof@forkIO.com> |
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Accessing COM / OLE Automation objects from Haskell clients. This library
provides a fairly high-level view of Automation objects and the data values
that their methods support. Transparent marshalling of arguments and invocation
over Automation objects is supported via the Variant
class and a family
of invoke
methods. This is also extended to cover the properties/fields of
such objects.
Synopsis
- module System.Win32.Com
- data IDispatch_ a
- type IDispatch a = IUnknown (IDispatch_ a)
- iidIDispatch :: IID (IDispatch ())
- queryIUnknown :: IID (IUnknown a) -> IUnknown () -> IO (IUnknown a)
- queryIDispatch :: IID (IUnknown a) -> IDispatch () -> IO (IUnknown a)
- createObject :: ProgID -> IO (IDispatch a)
- getObject :: String -> IO (IDispatch a)
- getActiveObject :: ProgID -> IO (IDispatch a)
- getFileObject :: String -> ProgID -> IO (IDispatch a)
- type Member = String
- type DISPID = Int32
- getMemberID :: Member -> IDispatch a -> IO DISPID
- type VARIANT = Ptr VARIANT_
- sizeofVARIANT :: Word32
- marshallVARIANT :: VARIANT -> IO VARIANT
- unmarshallVARIANT :: Ptr a -> IO VARIANT
- readVARIANT :: Ptr VARIANT -> IO VARIANT
- writeVARIANT :: Ptr VARIANT -> VARIANT -> IO ()
- copyVARIANT :: VARIANT -> VARIANT -> IO ()
- allocVARIANT :: IO VARIANT
- type VarIn = VARIANT -> IO ()
- type VarRes a = VARIANT -> IO a
- type ArgIn a = a -> VarIn
- type ArgInOut a b = a -> ArgOut b
- type ArgOut a = (VarIn, ArgRes a)
- type ArgRes a = VarRes a
- class Variant a where
- inVariant :: ArgIn a
- inVarList :: ArgIn [a]
- inVarIUnknown :: ArgIn (IUnknown a)
- vtEltType :: a -> VARENUM
- resVariant :: ArgRes a
- defaultVariant :: a
- resVarList :: ArgRes [a]
- resVarIUnknown :: ArgRes (IUnknown a)
- resVarIDispatch :: ArgRes (IDispatch a)
- inoutVariant :: (Variant a, Variant b) => ArgInOut a b
- outVariant :: Variant a => ArgOut a
- defaultEmpty :: ()
- inEmpty :: ArgIn ()
- resEmpty :: ArgRes ()
- inoutEmpty :: () -> (VarIn, ArgRes ())
- outEmpty :: (VarIn, ArgRes ())
- inNoArg :: ArgIn ()
- defaultInt :: Int
- inInt :: ArgIn Int
- resInt :: ArgRes Int
- inoutInt :: Int -> (VarIn, ArgRes Int)
- outInt :: (VarIn, ArgRes Int)
- defaultInt8 :: Int8
- inInt8 :: ArgIn Int8
- resInt8 :: ArgRes Int8
- inoutInt8 :: Int8 -> (VarIn, ArgRes Int8)
- outInt8 :: (VarIn, ArgRes Int8)
- defaultInt16 :: Int16
- inInt16 :: ArgIn Int16
- resInt16 :: ArgRes Int16
- inoutInt16 :: Int16 -> (VarIn, ArgRes Int16)
- outInt16 :: (VarIn, ArgRes Int16)
- defaultInt32 :: Int32
- inInt32 :: ArgIn Int32
- resInt32 :: ArgRes Int32
- inoutInt32 :: Int32 -> (VarIn, ArgRes Int32)
- outInt32 :: (VarIn, ArgRes Int32)
- defaultInt64 :: Int64
- inInt64 :: ArgIn Int64
- resInt64 :: ArgRes Int64
- inoutInt64 :: Int64 -> (VarIn, ArgRes Int64)
- outInt64 :: (VarIn, ArgRes Int64)
- defaultInteger :: Int64
- inInteger :: ArgIn Int64
- resInteger :: ArgRes Int64
- inoutInteger :: Int64 -> (VarIn, ArgRes Int64)
- outInteger :: (VarIn, ArgRes Int64)
- defaultHRESULT :: Int32
- inHRESULT :: ArgIn Int32
- resHRESULT :: ArgRes Int32
- inoutHRESULT :: Int32 -> (VarIn, ArgRes Int32)
- outHRESULT :: (VarIn, ArgRes Int32)
- defaultWord :: Int
- inWord :: ArgIn Int
- resWord :: ArgRes Int
- inoutWord :: Int -> (VarIn, ArgRes Int)
- outWord :: (VarIn, ArgRes Int)
- defaultWord8 :: Word8
- inWord8 :: ArgIn Word8
- resWord8 :: ArgRes Word8
- inoutWord8 :: Word8 -> (VarIn, ArgRes Word8)
- outWord8 :: (VarIn, ArgRes Word8)
- defaultWord16 :: Word16
- inWord16 :: ArgIn Word16
- resWord16 :: ArgRes Word16
- inoutWord16 :: Word16 -> (VarIn, ArgRes Word16)
- outWord16 :: (VarIn, ArgRes Word16)
- defaultWord32 :: Word32
- inWord32 :: ArgIn Word32
- resWord32 :: ArgRes Word32
- inoutWord32 :: Word32 -> (VarIn, ArgRes Word32)
- outWord32 :: (VarIn, ArgRes Word32)
- defaultWord64 :: Word64
- inWord64 :: ArgIn Word64
- resWord64 :: ArgRes Word64
- inoutWord64 :: Word64 -> (VarIn, ArgRes Word64)
- outWord64 :: (VarIn, ArgRes Word64)
- defaultBool :: Bool
- inBool :: ArgIn Bool
- resBool :: ArgRes Bool
- inoutBool :: Bool -> (VarIn, ArgRes Bool)
- outBool :: (VarIn, ArgRes Bool)
- defaultByte :: Byte
- inByte :: ArgIn Byte
- resByte :: ArgRes Byte
- inoutByte :: Byte -> (VarIn, ArgRes Byte)
- outByte :: (VarIn, ArgRes Byte)
- defaultChar :: Char
- inChar :: ArgIn Char
- resChar :: ArgRes Char
- inoutChar :: Char -> (VarIn, ArgRes Char)
- outChar :: (VarIn, ArgRes Char)
- defaultFloat :: Float
- inFloat :: ArgIn Float
- resFloat :: ArgRes Float
- inoutFloat :: Float -> (VarIn, ArgRes Float)
- outFloat :: (VarIn, ArgRes Float)
- defaultDouble :: Double
- inDouble :: ArgIn Double
- resDouble :: ArgRes Double
- inoutDouble :: Double -> (VarIn, ArgRes Double)
- outDouble :: (VarIn, ArgRes Double)
- defaultString :: String
- inString :: ArgIn String
- resString :: ArgRes String
- inoutString :: String -> (VarIn, ArgRes String)
- outString :: (VarIn, ArgRes String)
- defaultIUnknown :: IUnknown a
- inIUnknown :: ArgIn (IUnknown a)
- resIUnknown :: ArgRes (IUnknown a)
- inoutIUnknown :: IUnknown a1 -> (VarIn, ArgRes (IUnknown a2))
- outIUnknown :: (VarIn, ArgRes (IUnknown a))
- defaultIDispatch :: IDispatch a
- inIDispatch :: ArgIn (IDispatch a)
- resIDispatch :: ArgRes (IDispatch a)
- inoutIDispatch :: IDispatch a1 -> (VarIn, ArgRes (IDispatch a2))
- outIDispatch :: (VarIn, ArgRes (IDispatch a))
- defaultDate :: Date
- inDate :: ArgIn Date
- resDate :: ArgRes Date
- inoutDate :: Date -> (VarIn, ArgRes Date)
- outDate :: (VarIn, ArgRes Date)
- type Date = Double
- defaultError :: Int32
- inError :: ArgIn Int32
- resError :: ArgRes Int32
- inoutError :: Int32 -> (VarIn, ArgRes Int32)
- outError :: (VarIn, ArgRes Int32)
- defaultMaybe :: Variant a => Maybe a
- inMaybe :: Variant a => ArgIn (Maybe a)
- resMaybe :: Variant a => ArgRes (Maybe a)
- inoutMaybe :: Variant a => ArgInOut (Maybe a) (Maybe a)
- outMaybe :: Variant a => (VarIn, ArgRes (Maybe a))
- inOptional :: VarIn -> ArgIn a -> ArgIn (Maybe a)
- defaultCurrency :: Currency
- inCurrency :: ArgIn Currency
- resCurrency :: ArgRes Currency
- inoutCurrency :: Currency -> (VarIn, ArgRes Currency)
- outCurrency :: (VarIn, ArgRes Currency)
- type Currency = Int64
- defaultSafeArray :: Variant a => SafeArray a
- inSafeArray :: Variant a => ArgIn (SafeArray a)
- resSafeArray :: Variant a => ArgRes (SafeArray a)
- inoutSafeArray :: Variant a => ArgInOut (SafeArray a) (SafeArray a)
- outSafeArray :: Variant a => ArgOut (SafeArray a)
- data SafeArray a
- mkSafeArray :: Variant a => SAFEARRAY -> SafeArray a
- defaultEnum :: Enum a => a
- inEnum :: Enum a => ArgIn a
- resEnum :: Enum a => ArgRes a
- inoutEnum :: Enum a => ArgInOut a a
- outEnum :: Enum a => ArgOut a
- vtTypeEnum :: Enum a => a -> VARENUM
- inHaskellValue :: ArgIn a
- unsafeResHaskellValue :: ArgRes a
- unsafeOutHaskellValue :: (Ptr (StablePtr a1) -> IO (), ArgRes a2)
- defaultSqlNull :: SqlNull
- inSqlNull :: ArgIn SqlNull
- resSqlNull :: ArgRes SqlNull
- inoutSqlNull :: SqlNull -> (VarIn, ArgRes SqlNull)
- outSqlNull :: (VarIn, ArgRes SqlNull)
- data SqlNull = SqlNull
- inGUID :: ArgIn GUID
- outGUID :: (VarIn, ArgRes GUID)
- inDefaultValue :: VarIn -> ArgIn a -> ArgIn a
- noInArg :: VarIn
- propertyGet :: Member -> [VarIn] -> ArgOut a -> IDispatch d -> IO a
- propertySet :: Member -> [VarIn] -> IDispatch d -> IO ()
- propertySetGet :: Member -> [VarIn] -> ArgOut a -> IDispatch d -> IO a
- propertyGet2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch d -> IO (a1, a2)
- propertyGet3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch d -> IO (a1, a2, a3)
- propertyGet4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch d -> IO (a1, a2, a3, a4)
- propertyGetID :: DISPID -> [VarIn] -> ArgOut a -> IDispatch d -> IO a
- propertySetID :: DISPID -> [VarIn] -> IDispatch d -> IO ()
- propertySetGetID :: DISPID -> [VarIn] -> ArgOut a -> IDispatch d -> IO a
- propertyGet2ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch d -> IO (a1, a2)
- propertyGet3ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch d -> IO (a1, a2, a3)
- propertyGet4ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch d -> IO (a1, a2, a3, a4)
- function1 :: Member -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1
- function2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2)
- function3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3)
- function4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4)
- function5 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5)
- function6 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6)
- functionID1 :: DISPID -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1
- functionID2 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2)
- functionID3 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3)
- functionID4 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4)
- functionID5 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5)
- functionID6 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6)
- method0 :: Member -> [VarIn] -> IDispatch i -> IO ()
- method1 :: Member -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1
- method2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2)
- method3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3)
- method4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4)
- method5 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5)
- method6 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6)
- method7 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7)
- method8 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> ArgOut a8 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7, a8)
- methodID0 :: DISPID -> [VarIn] -> IDispatch i -> IO ()
- methodID1 :: DISPID -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1
- methodID2 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2)
- methodID3 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3)
- methodID4 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4)
- methodID5 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5)
- methodID6 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6)
- methodID7 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7)
- methodID8 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> ArgOut a8 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7, a8)
- unmarshallVariants0 :: VARIANT -> IO ()
- unmarshallVariants1 :: ArgRes a -> VARIANT -> IO a
- unmarshallVariants2 :: ArgRes a -> ArgRes b -> VARIANT -> IO (a, b)
- unmarshallVariants3 :: ArgRes a -> ArgRes b -> ArgRes c -> VARIANT -> IO (a, b, c)
- unmarshallVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> VARIANT -> IO (a, b, c, d)
- unmarshallVariants5 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> ArgRes e -> VARIANT -> IO (a, b, c, d, e)
- unmarshallVariants6 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6)
- unmarshallVariants7 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7)
- unmarshallVariants8 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> ArgRes a8 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7, a8)
- readVariants0 :: VARIANT -> IO ()
- readVariants1 :: ArgRes a -> VARIANT -> IO a
- readVariants2 :: ArgRes a -> ArgRes b -> VARIANT -> IO (a, b)
- readVariants3 :: ArgRes a -> ArgRes b -> ArgRes c -> VARIANT -> IO (a, b, c)
- readVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> VARIANT -> IO (a, b, c, d)
- readVariants5 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> ArgRes e -> VARIANT -> IO (a, b, c, d, e)
- readVariants6 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6)
- readVariants7 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7)
- readVariants8 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> ArgRes a8 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7, a8)
- method_0_0 :: Member -> IDispatch i -> IO ()
- method_1_0 :: Variant a => Member -> a -> IDispatch i -> IO ()
- method_2_0 :: (Variant a1, Variant a2) => Member -> a1 -> a2 -> IDispatch i -> IO ()
- method_3_0 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO ()
- method_4_0 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO ()
- method_0_1 :: Variant a1 => Member -> IDispatch i -> IO a1
- method_1_1 :: (Variant a, Variant a1) => Member -> a -> IDispatch i -> IO a1
- method_2_1 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch i -> IO a3
- method_3_1 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO a4
- method_4_1 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO a5
- method_0_2 :: (Variant a1, Variant a2) => Member -> IDispatch i -> IO (a1, a2)
- method_1_2 :: (Variant a, Variant a1, Variant a2) => Member -> a -> IDispatch i -> IO (a1, a2)
- method_2_2 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> IDispatch i -> IO (a3, a4)
- method_3_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO (a4, a5)
- method_4_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5, Variant a6) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO (a5, a6)
- function_0_1 :: Variant a1 => Member -> IDispatch i -> IO a1
- function_1_1 :: (Variant a, Variant a1) => Member -> a -> IDispatch i -> IO a1
- function_2_1 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch i -> IO a3
- function_3_1 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO a4
- function_4_1 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO a5
- function_0_2 :: (Variant a1, Variant a2) => Member -> IDispatch i -> IO (a1, a2)
- function_1_2 :: (Variant a, Variant a1, Variant a2) => Member -> a -> IDispatch i -> IO (a1, a2)
- function_2_2 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> IDispatch i -> IO (a3, a4)
- function_3_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO (a4, a5)
- function_4_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5, Variant a6) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO (a5, a6)
- propertyGet_0 :: Variant a => Member -> IDispatch d -> IO a
- propertyGet_1 :: (Variant a1, Variant a2) => Member -> a1 -> IDispatch d -> IO a2
- propertyGet_2 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch d -> IO a3
- propertyGet_3 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch d -> IO a4
- propertyGet_4 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch d -> IO a5
- propertySet_1 :: Variant a => Member -> a -> IDispatch d -> IO ()
- propertySet_2 :: (Variant a1, Variant a2) => Member -> a1 -> a2 -> IDispatch d -> IO ()
- propertySet_3 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> a3 -> IDispatch d -> IO ()
- propertySet_4 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch d -> IO ()
- invokePropertyGet :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT
- invokePropertySet :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT
- invokeMethod :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT
- invokeFunction :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT
- enumVariants :: Variant a => IDispatch b -> IO (Int, [a])
- marshallCurrency :: Int64 -> IO Int64
- unmarshallCurrency :: Int64 -> IO Int64
- readCurrency :: Ptr Int64 -> IO Int64
- writeCurrency :: Ptr Int64 -> Int64 -> IO ()
- sizeofCurrency :: Word32
- data VARENUM
- = VT_EMPTY
- | VT_NULL
- | VT_I2
- | VT_I4
- | VT_R4
- | VT_R8
- | VT_CY
- | VT_DATE
- | VT_BSTR
- | VT_DISPATCH
- | VT_ERROR
- | VT_BOOL
- | VT_VARIANT
- | VT_UNKNOWN
- | VT_DECIMAL
- | VT_I1
- | VT_UI1
- | VT_UI2
- | VT_UI4
- | VT_I8
- | VT_UI8
- | VT_INT
- | VT_UINT
- | VT_VOID
- | VT_HRESULT
- | VT_PTR
- | VT_SAFEARRAY
- | VT_CARRAY
- | VT_USERDEFINED
- | VT_LPSTR
- | VT_LPWSTR
- | VT_FILETIME
- | VT_BLOB
- | VT_STREAM
- | VT_STORAGE
- | VT_STREAMED_OBJECT
- | VT_STORED_OBJECT
- | VT_BLOB_OBJECT
- | VT_CF
- | VT_CLSID
- | VT_BSTR_BLOB
- | VT_VECTOR
- | VT_ARRAY
- | VT_BYREF
- | VT_RESERVED
- | VT_ILLEGAL
- | VT_ILLEGALMASKED
- | VT_TYPEMASK
- marshallVARENUM :: VARENUM -> IO Int16
- unmarshallVARENUM :: Int16 -> IO VARENUM
- readVARENUM :: Ptr Int16 -> IO VARENUM
- writeVARENUM :: Ptr Int16 -> VARENUM -> IO ()
- sizeofVARENUM :: Word32
- sizeofVARIANT_BOOL :: Word32
- marshallVARIANT_BOOL :: Bool -> IO Int16
- unmarshallVARIANT_BOOL :: Int16 -> IO Bool
- readVARIANT_BOOL :: Ptr Int16 -> IO Bool
- writeVARIANT_BOOL :: Ptr Int16 -> Bool -> IO ()
- vARIANT_TRUE :: Int
- vARIANT_FALSE :: Int
- marshallVariant :: Variant a => a -> IO VARIANT
- unmarshallVariant :: Variant a => VARIANT -> IO a
- readVariant :: Variant a => VARIANT -> IO a
- writeVariant :: Variant a => VARIANT -> a -> IO ()
- readVarEnum :: VARIANT -> IO VARENUM
- readVarInt :: VARIANT -> IO Int32
- readVarFloat :: VARIANT -> IO Float
- readVarDouble :: VARIANT -> IO Double
- readVarString :: VARIANT -> IO (Ptr (Ptr Char), Ptr VARIANT)
- readVarBool :: VARIANT -> IO Bool
- marshallSafeArray :: SafeArray a -> IO (ForeignPtr SAFEARRAY)
- unmarshallSafeArray :: Ptr a -> IO (SafeArray a)
- writeSafeArray :: Ptr (SafeArray a) -> SafeArray a -> IO ()
- readSafeArray :: Variant a => Bool -> Ptr (SafeArray a) -> IO (SafeArray a)
- freeSafeArray :: SafeArray a -> IO ()
- readSA :: Bool -> Ptr (SafeArray a) -> VARENUM -> IO SAFEARRAY
- systemTimeToDate :: SystemTime -> IO Date
Documentation
module System.Win32.Com
data IDispatch_ a Source #
Instances
Variant (IDispatch_ a) Source # | |
Defined in System.Win32.Com.Automation inVariant :: ArgIn (IDispatch_ a) Source # inVarList :: ArgIn [IDispatch_ a] Source # inVarIUnknown :: ArgIn (IUnknown (IDispatch_ a)) Source # vtEltType :: IDispatch_ a -> VARENUM Source # resVariant :: ArgRes (IDispatch_ a) Source # defaultVariant :: IDispatch_ a Source # resVarList :: ArgRes [IDispatch_ a] Source # resVarIUnknown :: ArgRes (IUnknown (IDispatch_ a)) Source # resVarIDispatch :: ArgRes (IDispatch (IDispatch_ a)) Source # |
type IDispatch a = IUnknown (IDispatch_ a) Source #
iidIDispatch :: IID (IDispatch ()) Source #
createObject :: ProgID -> IO (IDispatch a) Source #
createObject progid
is the Haskell equivalent of
VB's CreateObject
, trying to instantiate a new
Automation object via an IDispatch
interfac pointer.
getMemberID :: Member -> IDispatch a -> IO DISPID Source #
getMemberID memberName obj
translates the memberName
string
into the unique DISPID
representing that method/property. If unknown,
a COM exception is raised.
allocVARIANT :: IO VARIANT Source #
type VarIn = VARIANT -> IO () Source #
VarIn
is the marshaller for Variant
arguments; a function that
takes (a pointer to) a VARIANT structure and fills it in with value
it encodes.
type VarRes a = VARIANT -> IO a Source #
VarRes
is the unmarshaller for 'Variant results; a function that
takes (a pointer to) the VARIANT result and unscrambles its contents
into the Haskell value representing that Variant
result.
type ArgInOut a b = a -> ArgOut b Source #
ArgInOut a b
is the general 'in-out' parameter marshaller and result
unmarshaller.
type ArgOut a = (VarIn, ArgRes a) Source #
ArgOut a
represent an in-out
Automation parameter, pairing a marshaller
with an unmarshaller for some type. Notice that the input value being marshalled
may not have the same type as the output/result value being unmarshalled.
class Variant a where Source #
inVarList :: ArgIn [a] Source #
inVarIUnknown :: ArgIn (IUnknown a) Source #
vtEltType :: a -> VARENUM Source #
resVariant :: ArgRes a Source #
defaultVariant :: a Source #
resVarList :: ArgRes [a] Source #
resVarIUnknown :: ArgRes (IUnknown a) Source #
resVarIDispatch :: ArgRes (IDispatch a) Source #
Instances
outVariant :: Variant a => ArgOut a Source #
defaultEmpty :: () Source #
inoutEmpty :: () -> (VarIn, ArgRes ()) Source #
defaultInt :: Int Source #
defaultInt8 :: Int8 Source #
defaultInt16 :: Int16 Source #
defaultInt32 :: Int32 Source #
defaultInt64 :: Int64 Source #
resInteger :: ArgRes Int64 Source #
resHRESULT :: ArgRes Int32 Source #
defaultWord :: Int Source #
defaultWord8 :: Word8 Source #
defaultBool :: Bool Source #
defaultByte :: Byte Source #
defaultChar :: Char Source #
defaultFloat :: Float Source #
defaultIUnknown :: IUnknown a Source #
inIUnknown :: ArgIn (IUnknown a) Source #
resIUnknown :: ArgRes (IUnknown a) Source #
defaultIDispatch :: IDispatch a Source #
inIDispatch :: ArgIn (IDispatch a) Source #
resIDispatch :: ArgRes (IDispatch a) Source #
defaultDate :: Date Source #
defaultError :: Int32 Source #
defaultMaybe :: Variant a => Maybe a Source #
defaultSafeArray :: Variant a => SafeArray a Source #
Instances
Variant a => Variant (SafeArray a) Source # | |
Defined in System.Win32.Com.Automation inVariant :: ArgIn (SafeArray a) Source # inVarList :: ArgIn [SafeArray a] Source # inVarIUnknown :: ArgIn (IUnknown (SafeArray a)) Source # vtEltType :: SafeArray a -> VARENUM Source # resVariant :: ArgRes (SafeArray a) Source # defaultVariant :: SafeArray a Source # resVarList :: ArgRes [SafeArray a] Source # resVarIUnknown :: ArgRes (IUnknown (SafeArray a)) Source # resVarIDispatch :: ArgRes (IDispatch (SafeArray a)) Source # |
defaultEnum :: Enum a => a Source #
vtTypeEnum :: Enum a => a -> VARENUM Source #
inHaskellValue :: ArgIn a Source #
propertyGet3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch d -> IO (a1, a2, a3) Source #
propertyGet4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch d -> IO (a1, a2, a3, a4) Source #
propertyGet2ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch d -> IO (a1, a2) Source #
propertyGet3ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch d -> IO (a1, a2, a3) Source #
propertyGet4ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch d -> IO (a1, a2, a3, a4) Source #
function3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) Source #
function4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) Source #
function5 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) Source #
function6 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) Source #
functionID3 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) Source #
functionID4 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) Source #
functionID5 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) Source #
functionID6 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) Source #
method3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) Source #
method4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) Source #
method5 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) Source #
method6 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) Source #
method7 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7) Source #
method8 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> ArgOut a8 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7, a8) Source #
methodID3 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) Source #
methodID4 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) Source #
methodID5 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) Source #
methodID6 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) Source #
methodID7 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7) Source #
methodID8 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> ArgOut a8 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7, a8) Source #
unmarshallVariants0 :: VARIANT -> IO () Source #
unmarshallVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> VARIANT -> IO (a, b, c, d) Source #
unmarshallVariants5 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> ArgRes e -> VARIANT -> IO (a, b, c, d, e) Source #
unmarshallVariants6 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6) Source #
unmarshallVariants7 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7) Source #
unmarshallVariants8 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> ArgRes a8 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7, a8) Source #
readVariants0 :: VARIANT -> IO () Source #
readVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> VARIANT -> IO (a, b, c, d) Source #
readVariants5 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> ArgRes e -> VARIANT -> IO (a, b, c, d, e) Source #
readVariants6 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6) Source #
readVariants7 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7) Source #
readVariants8 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> ArgRes a8 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7, a8) Source #
method_3_0 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO () Source #
method_4_0 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO () Source #
method_2_1 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch i -> IO a3 Source #
method_3_1 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO a4 Source #
method_4_1 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO a5 Source #
method_1_2 :: (Variant a, Variant a1, Variant a2) => Member -> a -> IDispatch i -> IO (a1, a2) Source #
method_2_2 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> IDispatch i -> IO (a3, a4) Source #
method_3_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO (a4, a5) Source #
method_4_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5, Variant a6) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO (a5, a6) Source #
function_2_1 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch i -> IO a3 Source #
function_3_1 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO a4 Source #
function_4_1 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO a5 Source #
function_1_2 :: (Variant a, Variant a1, Variant a2) => Member -> a -> IDispatch i -> IO (a1, a2) Source #
function_2_2 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> IDispatch i -> IO (a3, a4) Source #
function_3_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO (a4, a5) Source #
function_4_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5, Variant a6) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO (a5, a6) Source #
propertyGet_2 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch d -> IO a3 Source #
propertyGet_3 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch d -> IO a4 Source #
propertyGet_4 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch d -> IO a5 Source #
propertySet_3 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> a3 -> IDispatch d -> IO () Source #
propertySet_4 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch d -> IO () Source #
Instances
vARIANT_TRUE :: Int Source #
vARIANT_FALSE :: Int Source #
marshallSafeArray :: SafeArray a -> IO (ForeignPtr SAFEARRAY) Source #
freeSafeArray :: SafeArray a -> IO () Source #
systemTimeToDate :: SystemTime -> IO Date Source #