简陋飞信、QQ轰炸器--Java
来源:互联网 发布:非结构化数据如何分析 编辑:程序博客网 时间:2024/04/29 07:30
放假在家不务正业,偶然想到白大嘴以前用C#实现过的QQ 飞信轰炸软件,就想用Java也搞一个。
用java的亲们都知道,JNI蛋疼无比,虽然楼主没有用过,但仍不敢尝试。于是google到JNA这个高级货色,可以用纯java来写。但事实证明,JNA更蛋疼,楼主要是用JNI的话最多再写2个C代码,JNA的文档奇烂无比,API基本都没有解释。JNA封装了use32.dll中部分函数,但最简单的获得当前鼠标坐标的函数却没有找到。另一种方法是自己继承Library接口即可调用函数,非常简单。但C和Java的数据结构不同,虽然JNA定义了转换规则,仍然很头晕。
user32.dll中PostMessage和SendMessage可以向指定窗口发送消息。PostMessage是非阻塞的,而SendMessage是阻塞的。SendMessage有SendMessageA和SendMessageM 2种(楼主只用了这两个,可能还有其他),SendMessageA仅发送ASCII字符,而SendMessageM用来发送Unicode。
Windows API 各函数的参数还是一头雾水,以后重新搞C的时候再看吧。
楼主代码写得很烂,只是想实现功能,就无所谓了。
import java.awt.event.KeyEvent;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import com.sun.jna.Native;import com.sun.jna.Pointer;import com.sun.jna.platform.win32.Kernel32;import com.sun.jna.platform.win32.User32;import com.sun.jna.platform.win32.WinDef.HMODULE;import com.sun.jna.platform.win32.WinDef.LRESULT;import com.sun.jna.platform.win32.WinUser;import com.sun.jna.platform.win32.WinUser.HHOOK;import com.sun.jna.platform.win32.WinUser.LowLevelKeyboardProc;import com.sun.jna.platform.win32.WinUser.MSG;import com.sun.jna.platform.win32.WinUser.KBDLLHOOKSTRUCT;import com.sun.jna.platform.win32.WinDef.WPARAM;import com.sun.jna.win32.StdCallLibrary;/** * Hello world! * */public class App {public interface USER32 extends StdCallLibrary{USER32 INSTANCE = (USER32) Native.loadLibrary("user32", USER32.class);int GetWindowTextA(Pointer hwnd, byte[] lpString, int nMaxCount);Pointer GetWindowDC(Pointer hwnd);Pointer WindowFromPoint(int xPoint, int yPoint);boolean GetCursorPos(int[] coor);int SendMessageW(Pointer hwnd, int wMsg, int wParam, String lParam);int SendMessageW(Pointer hwnd, int wMsg, int wParam, int lParam);void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);static final int WM_CHAR = 0x102;} public static void main( String[] args ) throws UnsupportedEncodingException { int[] pointer = new int[2]; String text = "中午好"; int i = 10; try {Thread.sleep(2000);} catch (InterruptedException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} while(i-->0){ USER32.INSTANCE.GetCursorPos(pointer);//获取当前鼠标位置 Pointer window = USER32.INSTANCE.WindowFromPoint(pointer[0], pointer[1]); //获得鼠标所在的窗口 for(int j=0;j<text.length();j++){ USER32.INSTANCE.SendMessageW(window, WinUser.WM_CHAR, text.codePointAt(j), null);//发送消息 } byte enter = 13 & 0xff; USER32.INSTANCE.SendMessageW(window, WinUser.WM_KEYDOWN, enter, 0);//发送回车键 try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} } } }
楼主的代码很短,4行就可以把功能做出来了,但楼主对以上代码充满着困惑:
1.自定义的USER32接口中的各种类型,是楼主参考网上实现的。与JNA实现的几个函数中类型不同。但仍然能跑,楼主很奇怪。
2.楼主对SendMessage中的参数很不理解。
3.QQ和微博发送消息是Cntrl+Enter,SendMessage不能实现,楼主想用SendInput来着,但是没找到WinUser.INPUT.TYPE对应的常量,对JNA怨念不已....求解决方案。
希望有热心者给楼主留言解答。
- 简陋飞信、QQ轰炸器--Java
- java实现QQ邮箱轰炸式发邮件
- QQ音乐(简陋版)
- QQ消息轰炸&屏幕开花代码
- java swing 基本实现QQ截屏功能,很简陋但有学习价值
- 电话轰炸器
- 轰炸
- 轰炸
- 仿QQ侧滑删除(简陋版)
- 简单的无限短信轰炸器
- java编写的简陋的三子棋游戏
- wine安装RTX、QQ、飞信
- 第三方登录-[微博、微信、qq] java实现
- java 模拟微信,qq多少分钟之前工具类
- 一个简陋的lua调试器
- 最简陋的MP3播放器
- QQ微信设计
- 微信,QQ, 分享
- Oracle-创建Job
- js中window.opener和window.parent的用法
- Mysql导入、导出数据
- 13:48
- ExtJS中文乱码之GBK格式编码解决办法
- 简陋飞信、QQ轰炸器--Java
- 编译原理扫描程序,判断当前输入的程序中程序调用的函数是那个函数原型
- 让手机浏览更安全
- 关于onNewIntent()
- 孙多洋:企业最重要的生存法则——产品运营加资本运营
- 已经发不出感慨来了... ...
- xps 13格式化安装win7问题
- TCP/IP和Socket的关系
- VS2005开发WinCE6.0应用程序 更换SDK后工程的移植