Start Microstation from vba with user and workspace?

Hi all,

I am trying to launch Microstation from an external program using Visual Basic.

How can i define the user and the workspace that i want to launch Microstation in ?

so far i have this:

 Dim BMAPP As New MicroStationDGN.Application
BMAPP.Visible = True
Dim dgnfile As MicroStationDGN.DesignFile
dgnfile = BMAPP.OpenDesignFile("location of file,.....")

Is there any way that i can specify these variables?

Thanks?

p.s. I would prefer not to use the L.A. Solutions Microstation Detector...
Parents
  • To start MicroStation programmatically there are two primary methods.

    • The first method you illustrate above using the Microsoft COM approach by creating a new MicroStationDGN.Application; where the ApplicationObjectConnector is preferred in most cases; performs a GetObject, then CreateObject if needed.  See the MicroStation VBA help topic "Connection to MicroStation from a Seperate Process" for more details and sample code.

    The second method is using Microsoft VBA's "Shell" function, Microsoft C# "Process.Start", or Win32 "CreateProcess"/"ShellExecute"; where you have full control of how you start processes and can provide a full path and file name of the executable, any necessary command line arguments and (initial) filename to open/start with.  I presume the L.A.Solutions MicroStation Detector may be querying the Microsoft Installer registry entries and providing a list of installed products, using their physical discovered locations, and allowing command line arguments to be passed and started via Microsoft Shell function or similar lower level API calls to start the process in a very specific manner.  These same steps would be required if you simply cannot create your program to use a known path to a product to start the application.

    For cases that require opening MicroStation with a properly configured workspace and/or user the second option is the correct one to use.  Microsoft COM does not allow us to provide command line arguments.  Secondly due to the the low level items that MicroStation Workspaces affect and since we do not offer a public API that could allow for cleanly switching between workspaces on-the-fly, creating a process new passing command line arguments will provide the most predictable results.

    HTH,
    Bob



Reply
  • To start MicroStation programmatically there are two primary methods.

    • The first method you illustrate above using the Microsoft COM approach by creating a new MicroStationDGN.Application; where the ApplicationObjectConnector is preferred in most cases; performs a GetObject, then CreateObject if needed.  See the MicroStation VBA help topic "Connection to MicroStation from a Seperate Process" for more details and sample code.

    The second method is using Microsoft VBA's "Shell" function, Microsoft C# "Process.Start", or Win32 "CreateProcess"/"ShellExecute"; where you have full control of how you start processes and can provide a full path and file name of the executable, any necessary command line arguments and (initial) filename to open/start with.  I presume the L.A.Solutions MicroStation Detector may be querying the Microsoft Installer registry entries and providing a list of installed products, using their physical discovered locations, and allowing command line arguments to be passed and started via Microsoft Shell function or similar lower level API calls to start the process in a very specific manner.  These same steps would be required if you simply cannot create your program to use a known path to a product to start the application.

    For cases that require opening MicroStation with a properly configured workspace and/or user the second option is the correct one to use.  Microsoft COM does not allow us to provide command line arguments.  Secondly due to the the low level items that MicroStation Workspaces affect and since we do not offer a public API that could allow for cleanly switching between workspaces on-the-fly, creating a process new passing command line arguments will provide the most predictable results.

    HTH,
    Bob



Children
No Data