[python-win32] FrameMaker programming via FrameMaker API COM? OLE? What?

Brian Mahoney happy_ca_camper at yahoo.com
Fri Jul 18 13:46:18 EDT 2003


For FrameMaker I can find no typelib. In the regedit
entry for the CLSID of FrameMaker API and all other 
strings with "FrameMaker" there is no TypeLib entry
and nothing in the OLE/COM Object Viewer Type
Libraries list.

So, can I query any useful thing via COM FrameMaker
from Python, or do I just start wrapping?

--- "Jens B. Jorgensen" <jens.jorgensen at tallan.com>
wrote:
> You can probably do all of this without creating a C
> extension module. 
> You'd use the win32 extensions COM support. As long
> as the type library 
> is automation compatible it will work. You'll first
> probably want to 
> generate a COM wrapper library with <python 
> dir>/Lib/site-packages/win32com/client/makepy.py.
> This script will throw 
> up a GUI that will allow you to select the type
> library for the 
> FrameMaker API. By default the script will generate
> the wrapper library 
> as a module named by the type library's GUID,
> version, and LCID and 
> store it in Lib/site-packages/win32com/gen_py/.
> You'd then access it in 
> your script with:
> 
> from win32com.client import gencache
> FM = gencache.EnsureModule(<guid>, <LCID>, <major
> ver #>, <minor ver #>)
> 
> And then FM will be a python module. For example I
> use the VSS COM API with:
> VSS =
>
gencache.EnsureModule('{783CD4E0-9D54-11CF-B8EE-00608CC9A71F}',
> 0, 
> 5, 1)
> 
> The sticking point here if of course that you need
> to know the guid, 
> version, and LCID. This is not a big deal really
> though. You can use the 
> OLE View tool that comes with Visual Studio to
> lookup the library by 
> name under the Type Libraries tree and then when you
> select it in the 
> right pane you'll see something like:
> 
> TypeLib
>   + {783CD4E0-9D54-11CF-B8EE-00608CC9A71F}
>       + 5.1 = Microsoft SourceSafe 6.0 Type Library
>          + 0
>              + win32 = <path>
>           ...
> 
> The version is there (5.1) and the LCID is the
> integer under that.
> 
> Then just follow the API's documentation. The
> identifier will be the 
> same. You may find minor weirdness where objects
> have "properties" that 
> take params. Sometimes for these python has to
> generate get and set 
> methods to handle these with generated names. Should
> you hit something 
> like this just look at the generated wrapper .py and
> you should be able 
> to see what wrapper methods have been created. Other
> than that the type 
> lib Enums will be under <module>.constants
> 
> Good luck!
> 
> Brian Mahoney wrote:
> 
> >I'm biting the bullet and looking at wrapping the
> >C-language FrameMaker API in Python. Adobe
> FrameMaker 
> >Windows documentation describes a COM session where
> a
> >client can connect to the running FrameMaker
> session
> >and use the full FrameMaker API library to control
> FM.
> > 
> >
> >However, before I start wrapping the API, my first
> >Python extension, I would like to understand the
> >FrameMaker COM/OLE, at least see if I can do the
> >initial connection via existing Python modules. 
> >Everything, including the session connection is
> done
> >through the API, so I learn nothing from that
> >documentation. My previous OLE experience started
> and
> >ended with the first version of OLE for 16-bit
> Windows
> >so I am not up on current OLE/COM terminology.
> >
> >The Visual Studio OLE/COM object viewer, under "All
> >Objects" shows me a 32-bit FrameMaker API
> >InProcServer32 = ole32.dll
> >LocalServer32  = ...FrameMaker.exe /Automation
> /iconic
> >/nosplash
> >The most interesting interfaces are
> >IFrameMakerSession0 and IFrameMakerSession1
> >They list a CLSID with an
> >IFrameMakerSession0_PSFactory
> >with an InprocServer32 = ...\afmfdk.dll
> >
> >Does this tell me what kind of server I have for
> >FrameMaker or is it only telling me stuff about the
> >FrameMaker API client, and what I do in Python to
> >expose any interface?
> >
> >
> >__________________________________
> >Do you Yahoo!?
> >SBC Yahoo! DSL - Now only $29.95 per month!
> >http://sbc.yahoo.com
> >
> >_______________________________________________
> >Python-win32 mailing list
> >Python-win32 at python.org
>
>http://mail.python.org/mailman/listinfo/python-win32
> >  
> >
> 
> -- 
> Jens B. Jorgensen
> jens.jorgensen at tallan.com
> 
> "With a focused commitment to our clients and our
> people, we deliver value through customized
> technology solutions"  
> 
> 


__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com



More information about the Python-win32 mailing list