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
    Constructor | Description
    --- | ---
    `Factory()` |
    `Factory​(ComThread comThread)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `(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()