Package com.sun.jna.platform.win32.COM.util

## Class Factory

- java.lang.Object
- - com.sun.jna.platform.win32.COM.util.ObjectFactory
  - - com.sun.jna.platform.win32.COM.util.Factory

    public class Factory
    extends ObjectFactory

Factory is intended as a simpler to use version of ObjectFactory.

The Factory abstracts the necessity to handle COM threading by introducing a dispatching thread, that is correctly COM initialized and is used to handle all outgoing calls.

NOTE: Remember to call factory.getComThread().terminate() at some appropriate point, when the factory is not used anymore

### Constructor Summary

Constructors
`Factory()`
`Factory​(ComThread comThread)`

### Method Summary

All Methods Instance Methods Concrete Methods
`(package private) IDispatchCallback` `createDispatchCallback​(java.lang.Class<?> comEventCallbackInterface, IComEventCallbackListener comEventCallbackListener)`
`<T> T` `createObject​(java.lang.Class<T> comInterface)` Creates a new COM object (CoCreateInstance) for the given progId and returns a ProxyObject for the given interface.
`<T> T` `createProxy​(java.lang.Class<T> comInterface, IDispatch dispatch)` Creates a ProxyObject for the given interface and IDispatch pointer.
`(package private) Guid.GUID` `discoverClsId​(ComObject annotation)`
`<T> T` `fetchObject​(java.lang.Class<T> comInterface)` Gets and existing COM object (GetActiveObject) for the given progId and returns a ProxyObject for the given interface.
`ComThread` `getComThread()`
`IRunningObjectTable` `getRunningObjectTable()` CoInitialize must be called be fore this method.

### Methods inherited from class com.sun.jna.platform.win32.COM.util.ObjectFactory

`disposeAll, finalize, getLCID, register, setLCID, unregister`

### Methods inherited from class java.lang.Object

`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Factory

    public Factory()

#### Factory

    public Factory​(ComThread comThread)

### Method Detail

#### createProxy

    public <T> T createProxy​(java.lang.Class<T> comInterface,
                             IDispatch dispatch)

Description copied from class: `ObjectFactory`
Creates a ProxyObject for the given interface and IDispatch pointer.

Overrides:
  `createProxy` in class `ObjectFactory`

#### discoverClsId

    Guid.GUID discoverClsId​(ComObject annotation)

Overrides:
  `discoverClsId` in class `ObjectFactory`

#### fetchObject

    public <T> T fetchObject​(java.lang.Class<T> comInterface)
                      throws COMException

Description copied from class: `ObjectFactory`
Gets and existing COM object (GetActiveObject) for the given progId and returns a ProxyObject for the given interface.

Overrides:
  `fetchObject` in class `ObjectFactory`
Throws:
  `COMException`

#### createObject

    public <T> T createObject​(java.lang.Class<T> comInterface)

Description copied from class: `ObjectFactory`
Creates a new COM object (CoCreateInstance) for the given progId and returns a ProxyObject for the given interface.

Overrides:
  `createObject` in class `ObjectFactory`

#### createDispatchCallback

    IDispatchCallback createDispatchCallback​(java.lang.Class<?> comEventCallbackInterface,
                                             IComEventCallbackListener comEventCallbackListener)

Overrides:
  `createDispatchCallback` in class `ObjectFactory`

#### getRunningObjectTable

    public IRunningObjectTable getRunningObjectTable()

Description copied from class: `ObjectFactory`
CoInitialize must be called be fore this method. Either explicitly or implicitly via other methods.

Overrides:
  `getRunningObjectTable` in class `ObjectFactory`
Returns:
  running object table

#### getComThread

    public ComThread getComThread()