using 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 an ininvisible instance of a workspace and get a handle to the instance running at the given channel name ("Workspace1")
MyReflection.Start("Workspace1", false);
Application app1 = MyReflection.CreateApplication("WorkSpace1");
//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 and then get a handle to the screen
IFrame frame1 = (IFrame)app1.GetObject("Frame");
frame1.CreateView(terminal1);
IIbmScreen screen1 = terminal1.Screen;
//Start a second invisible instance of a workspace and get a handle to the instance running at the given channel name ("Workspace2")
MyReflection.Start("Workspace2", false);
Application app2 = MyReflection.CreateApplication("WorkSpace2");
//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, 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));
//Close the workspaces
app1.Close(ApplicationCloseOption.CloseNoSave);
app2.Close(ApplicationCloseOption.CloseNoSave);
}
}
}