java當腳本用。QQ表白轟炸機


入坑類似編程,還是要從遠古的初中年代,那時為了玩游戲,為了解放雙手,接觸到某某精靈。

把java當腳本用,肯定不是我的一個程序,是我萬萬沒想到的一種用法。

先上圖:

這QQ表白轟炸機,對女神還是要溫柔一點的,不然啊,被女神屏蔽了可(偷笑)。

 

現附上代碼吧

 1 package others;
 2 
 3 import java.awt.AWTException;
 4 import java.awt.Robot;
 5 import java.awt.Toolkit;
 6 import java.awt.datatransfer.StringSelection;
 7 import java.awt.event.KeyEvent;
 8 import java.io.BufferedReader;
 9 import java.io.File;
10 import java.io.FileInputStream;
11 import java.io.IOException;
12 import java.io.InputStreamReader;
13 import java.util.ArrayList;
14 
15 public class QQBomber {
16 
17 // bomber 為轟炸機的意思
18 
19     public static void main(String[] args) throws AWTException, IOException {
20         ArrayList<String> str = new ArrayList<String>();
21         Robot robot = new Robot();
22         // 靜態方法不能用this,啊。
23 //        File f = new File(this.getClass().getResource("/").getPath()+"SaoSaying.txt");
24         File f = new File(System.getProperty("user.dir") + "/src/others/SaoSaying.txt");
25         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
26         String stmp = "";
27         while (stmp != null) {
28             stmp = br.readLine();
29             if (stmp != null)
30                 str.add(stmp);
31         }
32 
33 //        Iterator<String> it = str.iterator();
34 //        while (it.hasNext()) {
35 //            String string = (String) it.next();
36 //            System.out.println(string);
37 //        } //迭代看看代碼讀到了沒
38         
39         robot.delay(3000);//延遲三秒,把光標定位到聊天窗口
40         for (int i = 0; i < 5; i++) {
41 //            隨機發
42 //            StringSelection stsel = new StringSelection(str.get((int) (Math.random() * str.size()-1)));
43             StringSelection stsel = new StringSelection(str.get(i));
44             Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stsel, stsel);
45 
46             robot.delay(500);
47             robot.keyPress(KeyEvent.VK_CONTROL);
48             robot.keyPress(KeyEvent.VK_V);
49             robot.keyRelease(KeyEvent.VK_CONTROL);
50             robot.keyRelease(KeyEvent.VK_V);
51             robot.delay(50);
52             robot.keyPress(KeyEvent.VK_ENTER);
53             robot.keyRelease(KeyEvent.VK_ENTER);
54         }
55 
56     }
57 
58 }

從文件中讀取到集合中,剪貼板循環集合中的內容(隨機也可,記得改循環次數),robot類模擬按鍵粘貼發送。另外延時太低,會報錯嗷,系統粘貼板錯誤,我無法解決,也覺得沒用,慢一點就沒問題了,曾經寫個try-catch,出錯再粘貼一下發送,這樣的話可以減少了不能粘貼,程序中斷的幾率。

從文件中獲取,SAO話,SAO話百度上有。文件路徑,用的時候稍微改改就好了。

今天從文件中獲取的時候,發現this關鍵字不能在靜態方法中。因為Static方法是類方法,先於任何的實例(對象)存在。即Static方法在類加載時就已經存在了,但是對象是在創建時才在內存中生成。而this指代的是當前的對象。在方法中定義使用的this關鍵字,它的值是當前對象的引用.也就是說你只能用它來調用屬於當前對象的方法或者使用this處理方法中成員變量和局部變量重名的情況.。而且,更為重要的是this和super都無法出現在static 修飾的方法中,static 修飾的方法是屬於類的,該方法的調用者可能是一個類,而不是對象.如果使用的是類來調用而不是對象,則 this就無法指向合適的對象.所以static 修飾的方法中不能使用this——自由自在_Yu

本來想用這句代碼的URL xmlpath = this.getClass().getClassLoader().getResource("1.txt"); 可是不能用。然而,有一網站網友說:Actually. you can call a static method by using an object of the class in which the static method has been declared. Compiler will give no error. We do not do this because its a very bad way of calling/using a static method. :) 谷歌譯文:其實, 您可以使用已在其中聲明了靜態方法的類的對象來調用靜態方法。 編譯器不會給出任何錯誤。 我們不這樣做,因為這是調用/使用靜態方法的一種非常糟糕的方式。 :)。方法很機智,但是好像缺點優雅。

獲得粘貼板的代碼,兩句,百度復制的。誰都可以。

robot.delay(500);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_CONTROL);

robot類,delay方法延遲的,keyPress是按下某個鍵,keyRelease釋放某個鍵。不然用簡單帶過吧。

附上一點點文件內容,百度上有好多嗷,還是稍微改改,才能顯出心意吧。

從前,眼前人是心上人。以后,心上人是枕邊人。
世界並不會對你溫柔以待,上帝也不會對你特殊照顧,但我會。
一生這么長,我需要一個人作伴,說說廢話,湊一桌吃飯,把余下的一生都過完,而那個人只能是你。
縱使生活沒那么容易,我還是想把你放在未來里,一生歡喜,不為世俗所及。
十句搭訕、百句晚安、千句閑聊、萬句廢話,只為有一天在婚禮堂,聽到一句我願意。
怎么說呢,你對我笑的時候啊,感覺就好像我是只剩1%電的手機,就在哆哆嗦嗦要關機的那一瞬間,突然被你接上了充電器。

女神不喜歡簡單粗暴,可要溫柔哦。

趁早解放雙手,不要碼代碼了,當一條鮮魚吧,快樂的蹦躂。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM