hcom-0.0.0.6: Haskell COM support library
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
LicenseBSD-style (see the file libraries/base/LICENSE)
MaintainerSigbjorn Finne <sof@forkIO.com>
Stabilityprovisional
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

System.Win32.Com.Automation

Description

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

Documentation

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.

type Member = String Source #

Automation Member functions or properties are identified by either name or DISPID. The latter saving you from having to do a method name resolution for each invocation.

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.

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 ArgIn a = a -> VarIn Source #

ArgIn is the extension of VarIn, returning a VarIn marshaller for some Variant-supported value of type a.

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.

type ArgRes a = VarRes a Source #

ArgRes is the Variant unmarshaller for results of type a, where is one of the Variant supported types.

class Variant a where Source #

Instances

Instances details
Variant Bool Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Char Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Double Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Float Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Int Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Int8 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Int16 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Int32 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Int64 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Word8 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Word16 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Word32 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant Word64 Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant () Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant SAFEARRAY Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant a => Variant [a] Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant a => Variant (Maybe a) Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant (Ptr a) Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant a => Variant (IUnknown_ a) Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant (IDispatch_ a) Source # 
Instance details

Defined in System.Win32.Com.Automation

Variant a => Variant (SafeArray a) Source # 
Instance details

Defined in System.Win32.Com.Automation

inoutEmpty :: () -> (VarIn, ArgRes ()) Source #

data SqlNull Source #

Constructors

SqlNull 

propertyGet2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch d -> IO (a1, a2) 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 #

function1 :: Member -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 Source #

function2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) 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 #

functionID1 :: DISPID -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 Source #

functionID2 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) 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 #

method0 :: Member -> [VarIn] -> IDispatch i -> IO () Source #

method1 :: Member -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 Source #

method2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) 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 #

methodID1 :: DISPID -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 Source #

methodID2 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) 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 #

unmarshallVariants3 :: ArgRes a -> ArgRes b -> ArgRes c -> VARIANT -> IO (a, b, c) 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 #

readVariants2 :: ArgRes a -> ArgRes b -> VARIANT -> IO (a, b) Source #

readVariants3 :: ArgRes a -> ArgRes b -> ArgRes c -> VARIANT -> IO (a, b, c) 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_1_0 :: Variant a => Member -> a -> IDispatch i -> IO () Source #

method_2_0 :: (Variant a1, Variant a2) => Member -> a1 -> a2 -> IDispatch i -> IO () 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_1_1 :: (Variant a, Variant a1) => Member -> a -> IDispatch i -> IO a1 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_0_2 :: (Variant a1, Variant a2) => Member -> IDispatch i -> IO (a1, a2) 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_1_1 :: (Variant a, Variant a1) => Member -> a -> IDispatch i -> IO a1 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_0_2 :: (Variant a1, Variant a2) => Member -> IDispatch i -> IO (a1, a2) 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_1 :: (Variant a1, Variant a2) => Member -> a1 -> IDispatch d -> IO a2 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_1 :: Variant a => Member -> a -> IDispatch d -> IO () Source #

propertySet_2 :: (Variant a1, Variant a2) => Member -> a1 -> a2 -> IDispatch d -> IO () 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 #

writeVariant :: Variant a => VARIANT -> a -> IO () Source #