2015-04-16 12 views

cevap

29

Ortak çözüm panosunu kullanmaktır:

İhtiyacınız
String text = "Hello World"; 
StringSelection stringSelection = new StringSelection(text); 
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
clipboard.setContents(stringSelection, stringSelection); 

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_CONTROL); 
6

robot.keyPress(KeyEvent.VK_1); 
robot.keyRelease(KeyEvent.VK_1); 

Asistan "tip" karakteri, bir basın olduğu VE eylemi bırakın ... için sadece kopyalayıp üç kez yapıştırın, ama sadece o bir dizesinde değeri girebilirsiniz

+1

111 sadece bir örnektir. "Merhaba dünyaya" girmesini istediğimi söyle! –

3

bir döngü içine koyun ve başarabilecek Eng.Fouad tarafından açıklandığı gibi bu dizeyi kullanabilirsiniz. Ama bunu kullanarak zevk olmadığını, bu

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_H); 
robot.keyRelease(KeyEvent.VK_H); 
robot.keyPress(KeyEvent.VK_E); 
robot.keyRelease(KeyEvent.VK_E); 
robot.keyPress(KeyEvent.VK_L); 
robot.keyRelease(KeyEvent.VK_L); 
robot.keyPress(KeyEvent.VK_L); 
robot.keyRelease(KeyEvent.VK_L); 
robot.keyPress(KeyEvent.VK_O); 
robot.keyRelease(KeyEvent.VK_O); 

için denemeye olabilir ve yavaş yavaş veri biti girebilmeniz için ayrıca Thread.sleep kullanabilirsiniz.

1

Sanırım daha iyi bir soultus uyguladim, belki biri kullanisli oldugunu fark etti (ana yaklaşım enum KeyCode'daki tüm degerleri okumak ve bir HashMap'e koymak ve daha sonra bir int anahtar kodu bulmak için kullanmaktir)

public class KeysMapper { 

    private static HashMap<Character, Integer> charMap = new HashMap<Character, Integer>(); 

    static { 
     for (KeyCode keyCode : KeyCode.values()) { 
      if (keyCode.impl_getCode() >= 65 && keyCode.impl_getCode() <= 90){ 
       charMap.put(keyCode.getName().toLowerCase().toCharArray()[0], keyCode.impl_getCode()); 
      } 
      else{ 
       charMap.put(keyCode.getName().toLowerCase().toCharArray()[0], keyCode.impl_getCode()); 
      } 
     } 
    } 
    public static Key charToKey(char c){ 
     if(c>=65 && c<=90){ 
      return new Key(charMap.get(c), true); 
     } else { 
      return new Key(charMap.get(c), false); 
     } 
    } 

    public static List<Key> stringToKeys(String text){ 
     List<Key> keys = new ArrayList<Key>(); 
     for (char c : text.toCharArray()) { 
      keys.add(charToKey(c)); 
     } 
     return keys; 
    } 
bir büyük veya küçük char türüne olmadığını bilmek de önemli bir sınıfını yarattı

: tuşuna istiyorsanız robot.keyPress(charToKey('a').getKeyCode());

public class Key { 

    int keyCode; 
    boolean uppercase; 

//getters setter constructors} 

ve nihayet (tek karakter için) böyle kullanabilirsiniz bir büyük harf var o Basın ve kaydırma anahtarı ile serbest aynı anda

3

Java 7 yana da KeyEvent.getExtendedKeyCodeForChar (c) kullanabilir. küçük harf için bir örnek sadece olabilir: Bu, tüm "dizesini" yazmanız ama her seferinde bir karakteri dışındaki istediğini yazmak için yardımcı olur vermez

void sendKeys(Robot robot, String keys) { 
    for (char c : keys.toCharArray()) { 
     int keyCode = KeyEvent.getExtendedKeyCodeForChar(c); 
     if (KeyEvent.CHAR_UNDEFINED == keyCode) { 
      throw new RuntimeException(
       "Key code not found for character '" + c + "'"); 
     } 
     robot.keyPress(keyCode); 
     robot.delay(100); 
     robot.keyRelease(keyCode); 
     robot.delay(100); 
    } 
} 
+0

Teşekkürler. Büyük harf 'Character.isUpperCase (c)' ile kolayca kontrol edilebilir. – lazlev

0

.

Runtime.getRuntime().exec("notepad.exe");//or anywhere you want. 
    Thread.sleep(5000);//not required though gives a good feel. 
    Robot r=new Robot();  
    String a="Hi My name is Whatever you want to say."; 
    char c; 
    int d=a.length(),e=0,f=0; 

    while(e<=d) 
    { 
    c=a.charAt(e); 
    f=(int) c; //converts character to Unicode. 
     r.keyPress(KeyEvent.getExtendedKeyCodeForChar(f)); 
    e++; 
     Thread.sleep(150); 

     } 

Mükemmel çalışıyor ve harika! Her ne kadar |,! ... vb. Gibi unicode tarafından izlenemeyen özel karakterler için çalışmıyor olsa da. = New StringSelection ("belgenizin yolu")

1

StringSelection yolu;

// create an object to desktop 

    Toolkit tol = Toolkit.getDefaultToolkit(); 

    // get control of mouse cursor 

    Clipboard c = tol.getSystemClipboard(); 

    // copy the path into mouse 
    c.setContents(path, null); 

    // create a object of robot class 

    Robot r = new Robot(); 

    r.keyPress(KeyEvent.VK_CONTROL); 
    r.keyPress(KeyEvent.VK_V); 
    r.keyRelease(KeyEvent.VK_CONTROL); 
    r.keyRelease(KeyEvent.VK_V); 
    r.keyPress(KeyEvent.VK_ENTER); 
    r.keyRelease(KeyEvent.VK_ENTER); 

} 
İlgili konular