Rocket® Reflection Desktop (formerly a product of Micro Focus or formerly a product of Open Text) documentation that was created prior to Rocket Software's acquisition of certain products from OpenText may contain outdated references to "Micro Focus” or “OpenText”, which are trademarks of OpenText. Rocket Software is not affiliated with Micro Focus or OpenText and has rebranded these products as Rocket® products.
Control Multiple Reflection Workspaces
In This Topic
You can create multiple instances of the Reflection. This sample shows how to set up two Reflection workspaces so that controls in each workspace can be accessed.
To set up two workspaces
- In Visual Studio, create a new Console Application project and add references for
the following Reflection assemblies. (Depending on your version of Visual Studio,
these can be found either on the .NET tab or under Assemblies | Extensions.)
Attachmate.Reflection
Attachmate.Reflection.Framework
Attachmate.Reflection.Emulation.OpenSystems
Attachmate.Reflection.Emulation.IbmHosts - Replace all the code in the Program.cs file with the following code. This code creates
two instances of Reflection and opens a session for each. Then it gets text from each
session and writes it to the Console.
Control two workspaces Copy Codeusing System; using System.Collections.Generic; using System.Text; using Attachmate.Reflection; using Attachmate.Reflection.Emulation.IbmHosts; using Attachmate.Reflection.Framework; using Attachmate.Reflection.UserInterface; using Attachmate.Reflection.Emulation.OpenSystems; namespace MultipleWorkSpaces { class Program { static void Main(string[] args) { //Start a visible instance of Reflection or get the instance running at the given channel name ("Workspace1") Application app1 = MyReflection.CreateApplication("WorkSpace1", true); //Create a new IBM Session IIbmTerminal terminal1 = (IIbmTerminal)app1.CreateControl(new Guid("{09E5A1B4-0BA6-4546-A27D-FE4762B7ACE1}")); terminal1.HostAddress = "demo:ibm3270.sim"; //Create a View, making Reflection visible to users and then get a handle to the screen IFrame frame1 = (IFrame)app1.GetObject("Frame"); frame1.CreateView(terminal1); IIbmScreen screen1 = terminal1.Screen; //Start a second instance of Reflection or get the instance running at the given channel name ("Workspace2") Application app2 = MyReflection.CreateApplication("WorkSpace2", true); //Open a session in the second workspace string sessionPath = Environment.GetEnvironmentVariable("USERPROFILE") + @"\Documents\Micro Focus\Reflection\demoSession.rdox"; ITerminal terminal2 = (ITerminal)app2.CreateControl(sessionPath); //Create a View for the session in the second workspace, making Reflection visible to users, and then get a handle to the screen IFrame frame2 = (IFrame)app2.GetObject("Frame"); frame2.CreateView(terminal2); IScreen screen2 = (IScreen)terminal2.Screen; //Get some text from each of the terminal screens in the two workspaces Console.WriteLine("IBM terminal text is" + screen1.GetText(1, 1, 20) + "and UNIX text is" + screen2.GetText(1, 1, screen2.DisplayRows, screen2.DisplayColumns)); } } }
To test this project
- Open Reflection and create a new VT session.
- In the IP/Address box, enter "demo:UNIX" and then save the session as demoSession.rdox.
- In Visual Studio, press F5 to run the session.
- Verify that the text from each screen is written to the Console.