我知道这个问题被问过很多次。但是我没有得到我想要的。
我需要自动化使用Java连接到大型机的quick3270。
首先让我告诉你我想要什么。
我需要我的代码打开quick3270.exe,然后打开保存的会话:---完成。
现在,我必须将命令发送到quick3270。这是问题所在,我不知道如何将命令发送到该软件。
第三是我正在使用机器人类。因此我可以输入:TAB,ENTER,F3等输入。

因此,整件事是我想将命令发送到quick3270。我也需要间隔,比如发送一个命令然后延迟1秒然后再发送其他命令,依此类推。

public static void main(String[] args) throws IOException, AWTException {

    String exeloc = "C:\\Program Files\\Quick3270\\Quick3270.exe ";

    // my saved session
    String directory = "C:\\Users\\c111128\\Desktop\\Project\\xyz.ecf";

    ProcessBuilder builder = new ProcessBuilder(new String[] { exeloc, directory });

    // Starting the process
    Process p = builder.start();

    // For handling keyboard events
    Robot robot = new Robot();

    try {
        robot.delay(2000);

        // Passing enter key to top screen
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.delay(4000);
        // Here I want to write the command
        //Command like:"teleview" which is used in mainframe



        robot.delay(1000);
    }

    catch (Exception e) {
        System.out.println("Second:" + e);
        e.printStackTrace();
    }
}

最佳答案

您解决问题了吗?
通过VBA,您可以通过以下方式将命令发送到Quick3270:

Set Session = .ActiveSession
Set Screen = Session.Screen
Screen.SendKeys ("<Enter>")
Result = Screen.WaitForKbdUnlock
Screen.SendKeys ("<PF12>")
Screen.SendKeys ("<Enter>")
Result = Screen.WaitForKbdUnlock
Screen.SendKeys ("<PF12>")
Result = Screen.WaitForKbdUnlock
Result = Screen.WaitForCursor(4, 15)
QuickPutstring "1", 10, 2

Private Function QuickPutstring(ByVal PutstringText As String, Row As Long, Col As Long)
    Screen.MoveTo Row, Col
    Screen.Putstring PutstringText
End Function


希望有帮助...

10-08 13:33