Accessing a running instance of a program
-
I am trying to restrict operation to a single instance of my program (per user). Specifically, I create a shortcut in the "Send To" folder. If the program (an MDI program based on the MFC Doc/View architecture) is NOT running, right-clicking on a file in the Send-To context menu correctly runs the program with the file name as a command line argument. It I select the program again from the context Send-To menu a new instance of my program starts. What I would like to happen is that the new file is opened by the running instance of the program in a new MDI window. Could someone point me in the right direction for this? I did find code that prevents a second instance of the program from running. Unfortunately, it doesn't default to the OpenDocument option in the running instance of my program. (I'm using VS 2005, C++, MFC) TIA Ron
-
I am trying to restrict operation to a single instance of my program (per user). Specifically, I create a shortcut in the "Send To" folder. If the program (an MDI program based on the MFC Doc/View architecture) is NOT running, right-clicking on a file in the Send-To context menu correctly runs the program with the file name as a command line argument. It I select the program again from the context Send-To menu a new instance of my program starts. What I would like to happen is that the new file is opened by the running instance of the program in a new MDI window. Could someone point me in the right direction for this? I did find code that prevents a second instance of the program from running. Unfortunately, it doesn't default to the OpenDocument option in the running instance of my program. (I'm using VS 2005, C++, MFC) TIA Ron
First, maybe check this out: Avoiding Multiple Instances of an Application[^] Once you determine an instance of your application is already running, you'll need a way to pass the commandline parameters from the process launched by the Windows shell to the already-running process. Some form of interprocess communication can do this, like a named pipe or sockets. See Interprocess Communications[^] When the already-running instance of the application receives a command from the shell-launched instance, then it can open the file as usual. The shell-launched instance can terminate. Mark
Mark Salsbery Microsoft MVP - Visual C++ :java: