2015-10-25 5 views
0

Я хочу создать программу, которая запускает текстовое поле. В текстовом поле я могу написать команды, которые запустит другой процесс.отправить команды для обработки

Пример: Текстовое поле: «открыть firefox olaf» Затем программа запускает firefox. Олаф - это сигнал, который заканчивается командой .

Моя программа сравнения TextField String массив с командами String массива и, если, например слово «открыть» равный как в струнной массиве запускать в методе переключатель случае следующий метод «открытой». это хорошо работает.

Моей проблема: Теперь я хочу такую ​​команду: TextField: «типа в FireFox www.web.de Олафа» программка должна сосредоточена на светлячок и должны TypeN в светлячок «www.web.de» , но я не знаю, как это сделать. Я не хочу использовать класс робота с robot.keyPressed()

Также я хочу набрать текстовое поле на веб-сайтах.

Почему я это делаю? Я просто хочу изучать Java и использовать голосовые речи, поэтому мне не нужно вводить «open firefox olaf». Я просто сказал, что это;)

, если мне нужно сделать с C++ это нормально

import java.awt.BorderLayout; 
import java.awt.Robot; 
import java.awt.event.FocusEvent; 
import java.awt.event.FocusListener; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class KeyEventClass extends JFrame implements KeyListener, FocusListener { 

    private static final long serialVersionUID = 1L; 

    public KeyEventClass(){ 
     this.setLayout(new BorderLayout()); 
     JTextField field = new JTextField(); 
     field.addKeyListener(this); 
     this.add(field, BorderLayout.CENTER); 
     this.pack(); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setLocationRelativeTo(null); 
     this.setVisible(true); 

     this.addWindowListener(new WindowAdapter() { 
      public void windowActivated(WindowEvent e){ 
       field.requestFocus(); 
       field.setText(""); 
      } 
     }); 
    } 


    String[] Commands = {"open"}; 
    String[] Input = {"","","","","","","","","","","","","","",""} ; 
    int i = 0; 


    // Save the input in the String[] Input Variable but without VK_SPACE  
    public void keyPressed(KeyEvent e){ 

     if(i > 20) { System.out.println("Error Index over..");} 
     if(e.getKeyChar()==KeyEvent.VK_SPACE){ 

      i++; 

     } 
     if(e.getKeyChar() != KeyEvent.VK_SPACE) Input[i] += e.getKeyChar(); 

    } 

    // Compare Input and Commands  
    public void keyReleased(KeyEvent e) { 

     if(Input[i].compareTo("olaf")==0){ // olaf is a Signal of the end of the command line 
      for(int k =0; k< Commands.length;k++){ 
       for(int z=0; z < Input.length;z++){ 

        if(Input[z].compareTo(Commands[k])==0){ 

         switch(k){ 
         case 0: open(Input[z+1]); //after start follow the name of the process 
           System.out.println("case0 = open"); 
           delete(); 
           break; 
         } 

        } 
       } 
      } 

     } 
    } 

    public void open(String process){ 

     try { 
      Robot robot= new Robot(); 
      ProcessBuilder pb = new ProcessBuilder("cmd", "/c", 
        "C:\\Verknupfung\\"+process+".lnk");   //"C:\\Verknupfung\\" is a Path to start Process 
      pb.start(); 

      robot.delay(1000); 

      this.requestFocus();        //set focus on KeyEventClass after start process 

      } catch (Exception x) {System.out.println("Error to starts process:"+x);} 
    } 

    public void delete(){ 
     for(int k=0;k< Input.length;k++) Input[k] = "" ; 
     i=0; 

    } 

    public static void main(String[] args) { 
     new KeyEventClass(); 
    } 

    public void keyTyped(KeyEvent e) { 
    } 

    @Override 
    public void focusGained(FocusEvent arg0) { 
    } 

    @Override 
    public void focusLost(FocusEvent arg0) { 
     // TODO Auto-generated method stub 
    } 

} 
+0

Пожалуйста, найдите время, чтобы прочитать: http://stackoverflow.com/tour – Jayan

+0

Предполагая, что это не какое-то домашнее задание: вы можете предпочесть не изобретать колесо. Вместо этого, может быть, вы хотите создать что-то, что позволяет вам тестировать веб-страницы в firefox? Если это так, вам следует провести некоторое исследование инструментов тестирования, таких как фитнес или другие, которые могут дать вам то, что вам нужно. – GhostCat

+0

С не видом домашней работы. Я хочу изучать Java и с помощью этой программы я могу использовать речевые речи, поэтому мне не нужно вводить «open firefox olaf» –

ответ

0

Вы можете использовать аргументы командной строки для достижения этой цели.

./firefox www.stackoverflow.com

так и можно использовать ProcessBuilder, чтобы передать его в:

String urlAddress = someJTextField.getText(); 
ProcessBuilder pb = new ProcessBuilder("/firefox", urlAddress); 
pb.start(); 
+0

Хорошо, что работает хорошо, но как я могу печатать текстовые поля на веб-сайте? –

Смежные вопросы