- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Following an illuminating example by IanH on using the COM facilities to execute Matlab commands from Fortran, I am interested in using them on a wider scale.
But I am unsure how in general to find the "programmatic identifier prog_id" to be used in the
CALL COMCreateObjectByProgID (prog_id,idispatch,status)
For matlab it is 'matlab.application.single', but how can I find this out more generally? My current interest is linking to the Intel and Compaq array vizualisers via the COM interface - in particular so that I can run both from both CVF and IVF -built applications (I tried this with APIs and couldnt get them to work across the compilers). I looked thru the help/web on both to no avail..
any helps welcome - thanks in advance, dmitri
But I am unsure how in general to find the "programmatic identifier prog_id" to be used in the
CALL COMCreateObjectByProgID (prog_id,idispatch,status)
For matlab it is 'matlab.application.single', but how can I find this out more generally? My current interest is linking to the Intel and Compaq array vizualisers via the COM interface - in particular so that I can run both from both CVF and IVF -built applications (I tried this with APIs and couldnt get them to work across the compilers). I looked thru the help/web on both to no avail..
any helps welcome - thanks in advance, dmitri
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - forall
Following an illuminating example by IanH on using the COM facilities to execute Matlab commands from Fortran, I am interested in using them on a wider scale.
But I am unsure how in general to find the "programmatic identifier prog_id" to be used in the
CALL COMCreateObjectByProgID (prog_id,idispatch,status)
For matlab it is 'matlab.application.single', but how can I find this out more generally? My current interest is linking to the Intel and Compaq array vizualisers via the COM interface - in particular so that I can run both from both CVF and IVF -built applications (I tried this with APIs and couldnt get them to work across the compilers). I looked thru the help/web on both to no avail..
any helps welcome - thanks in advance, dmitri
But I am unsure how in general to find the "programmatic identifier prog_id" to be used in the
CALL COMCreateObjectByProgID (prog_id,idispatch,status)
For matlab it is 'matlab.application.single', but how can I find this out more generally? My current interest is linking to the Intel and Compaq array vizualisers via the COM interface - in particular so that I can run both from both CVF and IVF -built applications (I tried this with APIs and couldnt get them to work across the compilers). I looked thru the help/web on both to no avail..
any helps welcome - thanks in advance, dmitri
You can use the "Tools">>"OLE/COM Object Viewer" to look at all of the COM objects installed on your system. It list information (including ProgID) for each item. The trick may be finding the item you want, because there are a lot of them.
Happy hunting.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - John B. Walter
You can use the "Tools">>"OLE/COM Object Viewer" to look at all of the COM objects installed on your system. It list information (including ProgID) for each item. The trick may be finding the item you want, because there are a lot of them.
Happy hunting.
Thanks for the help!
But I dont see the Tools > OLE/COM viewer under my Tools in VS+IVF. I attach a screenshot. Is there some additional installation option? I have IVF11 and VS2008.
any ideas? thanks in advance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - forall
Thanks for the help!
But I dont see the Tools > OLE/COM viewer under my Tools in VS+IVF. I attach a screenshot. Is there some additional installation option? I have IVF11 and VS2008.
any ideas? thanks in advance
Hmm - I eventually found them under MS Software Development Tools in the Start Menu (whereas in CVF they were indeed under the Tools in the Visual studio). Not that it is critical, but is it possible to add them to the VS Tools Menu somehow?
More importantly though, I was indeed able to determine the progID for a few (relatively simple) modules (I could check by establishing the COM connection via the ProgID).
I did this largely by trial and error (because), and it turned out that (at least for those simple VB modules) it resides in the 4th field of the coClasses array. How general is this location? In my cases the TLB came from a Visual Basic DLL which has Classes, but there are also fields Interfaces and Dispinterfaces - are these relevant for call-by-progID at all?
Finally, when I looked at more complicated modules (matlab), I seemed unable to find a progID string that worked just from the TLB file (all strings seemed to be 'helpstrings'). Is this possible for a TLB, or is the progID always present in the file? Note that for this example (the mlapp.tlb found by IanH, cf http://software.intel.com/en-us/forums/showthread.php?t=66558) he already knew the progID (how, Ian? :-), so I know it exists somewhere - just not sure if it is present in that file.
Since this approach for establishing COM interfaces seems very useful, especially when progID is known, advice would be appreciated!

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page