WinWord as an OLE Object Issue

We have a module with a document preview using Word for the older format (.DOC). We also have other modules that open an OLE Word instance to work with Word documents, this all works fine: Except, we don’t want to be using Word instances for each document, on an RDS this can lead to hundreds of instances. We can use an existing Word instance, but if the existing Word instance is a preview, or embedded, instance, we don’t want to use this as it doesn’t have all features, no ribbon, no menus etc. I know how to find this preview instance and ignore it.

hr := GetActiveObject(ClassID, nil, unknown);

If the returned instance is embedded, we ignore it and create a new instance.

OleCheck(CoCreateInstance(ClassID,…

So, the question is: How can I return this second Word instance for subsequent documents, noting that there are multiple exe’s that will want to use this second instance?