Как сделать приложение Attachmate IBM Reflection 2014 Terminal видимым с помощью внешнего приложения?
Я пишу внешнее приложение для Attachmate's Reflection для IBM 2014. В этом приложении я пытаюсь создать приложение для улучшения с существующим файлом сеанса. Приложение успешно создается, но невидимо для пользователя. Я пытался сделать это несколькими способами, но пока не получилось.
Если кто-то сделал это или знает, что нужно сделать, чтобы сделать терминал видимым, ответьте.
Ниже приведен фрагмент кода, который я использую для этого,
using Attachmate.Reflection;
using Attachmate.Reflection.Framework;
using Attachmate.Reflection.Emulation.IbmHosts;
using Attachmate.Reflection.UserControl.IbmHosts;
using Attachmate.Reflection.UserInterface;
Application reflectionApplication;
reflectionApplication = MyReflection.CreateApplication("app", true);
IIbmTerminal terminal =(IIbmTerminal)reflectionApplication.CreateControl(@"C:\mypath\test.rd3x");
reflectionApplication = MyReflection.ActiveApplication;
IFrame frame = (IFrame) reflectionApplication.GetObject("Frame");
frame.Visible = true;
1 ответ
Лучший способ сделать это - использовать существующий файл сеанса (который вы обычно загружаете в Reflection). Таким образом, вам не нужно беспокоиться об имени хоста, порте через код.
Вот пример для этого, который я успешно использовал.
Attachmate.Reflection.Framework.Application reflectionApplication = null;
reflectionApplication = MyReflection.CreateApplication("myWorkspace", true);
if (reflectionApplication != null)
{
IIbmTerminal terminal = (IIbmTerminal)reflectionApplication.CreateControl(
@"C:\ProgramData\Attachmate\Reflection\<your session file>.rd3x");
if (terminal != null)
{
terminal.Connect();
//You can also use AfterConnect event to wait for the connection.
while (!terminal.IsConnected)
{
System.Threading.Thread.Sleep(500);
}
IView sessionView;
IFrame theFrame = (IFrame)reflectionApplication.GetObject("Frame");
sessionView = theFrame.CreateView(terminal);
IIbmScreen screen = terminal.Screen;
screen.WaitForHostSettle(6000, 3000);
}
else
Console.WriteLine("Can not create the control.");
}
else
Console.WriteLine("Failed to get Application object.");