当前位置: 移动技术网 > IT编程>开发语言>Java > java当脚本用。QQ表白轰炸机

java当脚本用。QQ表白轰炸机

2020年05月05日  | 移动技术网IT编程  | 我要评论

入坑类似编程,还是要从远古的初中年代,那时为了玩游戏,为了解放双手,接触到某某精灵。

把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%电的手机,就在哆哆嗦嗦要关机的那一瞬间,突然被你接上了充电器。

女神不喜欢简单粗暴,可要温柔哦。

趁早解放双手,不要码代码了,当一条鲜鱼吧,快乐的蹦跶。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网