欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-15 21:55:30
入坑类似编程,还是要从远古的初中年代,那时为了玩游戏,为了解放双手,接触到某某精灵。 把java当脚本用,肯定不是我的一个程序,是我万万没想到的一种用法。 先上图:。 这QQ表白轰炸机,对女神还是要温柔一点的,不然啊,被女神屏蔽了可(偷笑)。 现附上代码吧 1 package others; 2 3 ......

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

把java当脚本用,肯定不是我的一个程序,是我万万没想到的一种用法。

先上图:java当脚本用。QQ表白轰炸机

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

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

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