如何通过java中的AutoIT点击系统托盘程序?

时间:2014-05-08 13:03:03

标签: autoit

如何在java中通过AutoITx点击Systemtray程序?

我知道有很多库文件可用,比如“GuiToolBar.au3”我们需要包含在AutoIt程序中,但我们不能用Java导入它,所以我们不能在使用AutoItX和Jacob库时使用java中的方法。

2 个答案:

答案 0 :(得分:1)

我使用以下代码实现了这一点:

public static void Func_LaunchSystrayProgram()抛出IOException

{

    try {
        AutoItX objX = new AutoItX();
        int indexinSystray = 3;
        boolean resultflag = false;
        Thread.sleep(2000);
        boolean isfocus = objX.controlFocus(
                "[CLASS:Shell_TrayWnd]", "User Promoted Notification Area",
                "[CLASS:ToolbarWindow32]");
        objX.sleep(2000);

        System.out.println("isfocus:" + isfocus);
        if (isfocus == true) {

            for (int count = 0; count < indexinSystray; count++) {
                boolean clcik = objX.controlSend(
                        "[CLASS:Shell_TrayWnd]", "",
                        "[CLASS:ToolbarWindow32; ID:1504]", "{RIGHT}",
                        false);
                // objX.send("{RIGHT}");
                objX.sleep(1000);
            }
            objX.sleep(1000);


            objX.controlSend("[CLASS:Shell_TrayWnd]",
                    "", "[CLASS:ToolbarWindow32; ID:1504]", "{ENTER}",
                    false);

            String activeWintitle = objX
                    .winGetTitle("[ACTIVE]");

            System.out.println("activeWintitle: " + activeWintitle);
            if ("ProgramTitle".equalsIgnoreCase(activeWintitle)) {
                System.out.println("Title Match");
                resultflag = true;

            } else {
                System.out.println("Title Not Matched");
                resultflag = false;
            }

        } else {
            resultflag = false;
        }

        if (resultflag == true) {
            Update_Report("executed");
        } else {
            Update_Report("failed");
        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        System.out.println(e.getMessage());
        Update_Report("failed", e);
    }

答案 1 :(得分:0)

如果只是左键单击,ControlCommand SendCommandId通常正常工作,并允许您在原生AutoIt中执行此操作。

或者,您必须直接导入winapi函数。大多数链接似乎都指向JNA。如果您不确定要使用哪些函数,请查看GUIToolbar.au3的源代码,通常可以从中找出。