Как сделать приложение 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.");
Другие вопросы по тегам