2015-09-09 26 views
0

Я новичок в autoit и пытаюсь интегрировать его с java-приложением. Я не могу отправить его введите или tab или ctrl, он отправляет только обычный текст.Java и Autoit не могут отправлять такие клавиши, как TAB, ENTER или что-то еще?

Код это:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           

    String jacobDllVersionToUse; 
     if (jvmBitVersion().contains("32")){ 
      jacobDllVersionToUse = "jacob-1.18-M2-x86.dll"; 
     } 
     else { 
      jacobDllVersionToUse = "jacob-1.18-M2-x64.dll"; 
     } 
    try{ 
    File file = new File("lib", jacobDllVersionToUse); 
    System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath()); 

    AutoItX x = new AutoItX(); 
    x.run("Skype", "C:/Program Files (x86)/Skype/Phone", AutoItX.SW_SHOW); 
    x.winActivate("Skype"); 
    x.winWaitActive("Skype"); 
    x.sleep(2000); 
    x.send("{TAB}!n"); 
    }catch(Exception e){ 

    } 
}           

Я уже пробовал:

  • x.controlSend("Window Title","text","","{ENTER}",false);
  • x.send("{TAB}!n");
  • x.send("{TAB}n");
+0

Где ваш код AutoIt? Небольшой метод работы был бы приятным. Что такое '' AutoItX''? –

+0

А, вы используете AutoItX4Java, не так ли? В качестве дополнительной заметки вы должны позаботиться о запуске всего кода AutoIt в фоновом потоке, иначе он может заморозить ваш графический интерфейс Swing. –

+0

Также, какова общая цель этого кода? Если ваше желание состоит в том, чтобы вставлять текст в текстовый компонент Swing, тогда могут быть лучшие способы сделать это. –

ответ

1

Он работает с истинным или ложным твоим на Милос за предоставленную мне решение

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           
    String sql="select * from app_1 where id_user_main=?"; 
    String jacobDllVersionToUse; 
     if (jvmBitVersion().contains("32")){ 
      jacobDllVersionToUse = "jacob-1.18-M2-x86.dll"; 
     } 
     else { 
      jacobDllVersionToUse = "jacob-1.18-M2-x64.dll"; 
     } 
    try{ 
    File file = new File("lib", jacobDllVersionToUse); 
    System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath()); 
    AutoItX x = new AutoItX(); 
    x.run("Skype", "C:/Program Files (x86)/Skype/Phone", AutoItX.SW_SHOW); 
    x.winWait("Skype"); 
    x.winActivate("Skype"); 
    x.winWaitActive("Skype"); 
    x.sleep(2000); 
    x.send("{TAB}!n", false); 

    }catch(Exception e){ 

    } 
}           

Thy всем за помощь

+0

humm .. .net и java работают по-разному. – powerfade917

0

Вы отсутствует WinWait.

Попробуйте

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           

    String jacobDllVersionToUse; 
     if (jvmBitVersion().contains("32")){ 
      jacobDllVersionToUse = "jacob-1.18-M2-x86.dll"; 
     } 
     else { 
      jacobDllVersionToUse = "jacob-1.18-M2-x64.dll"; 
     } 
    try{ 
    File file = new File("lib", jacobDllVersionToUse); 
    System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath()); 

    AutoItX x = new AutoItX(); 
    x.run("Skype", "C:/Program Files (x86)/Skype/Phone", AutoItX.SW_SHOW); 
    x.winWait("Skype"); 
    x.winActivate("Skype"); 
    x.winWaitActive("Skype"); 
    x.sleep(2000); 
    x.send("{TAB}!n", false); 
    }catch(Exception e){ 

    } 
}  
+0

Thy, но все та же проблема отправляет {TAB}! N как текст – Tehnic

+0

@Tehnic добавляет 0 к функции отправки. x.send ("{TAB}! n", 0); Это заставит его отправлять специальные клавиши. установите его в 1, если вы хотите отправить их raw, как это происходит сейчас. – Milos

+0

@Tehnic также попробуйте этот x.send ("{TAB} {ALT} n", 0); – Milos