如何在java中通过AutoITx点击Systemtray程序?
我知道有很多库文件可用,比如“GuiToolBar.au3”我们需要包含在AutoIt程序中,但我们不能用Java导入它,所以我们不能在使用AutoItX和Jacob库时使用java中的方法。
答案 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
的源代码,通常可以从中找出。