因为毕业设计需要,做了一点点鼠标和键盘模拟的测试,收获了一点关于Robot知识,这是一个非常有趣的类,此类用于测试自动化,自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot类主要目的是便于java平台实现自动测试。主要方法如下:动作都在java.awt.event包中的KeyEvent和MouseEvent中定义
- void keyPress(int keycode)按下给定的键
- void keyRelease(int keycode)释放给定的键
- void mouseMove(int x, int y)将鼠标指针移动到给定屏幕坐标
- void mousePress(int buttons)按下一个或多个鼠标按钮
- void mouseRelease(int buttons)释放一个或多个鼠标按钮
- void mouseWheel(int wheelAmt)在配有滚轮的鼠标旋转滚轮
- BufferedImage createScreenCapture(Rectangle screenRect)创建包含从屏幕中读取的像素的图像
第一个例子是鼠标模拟测试,在多线程中每隔1s随机移动鼠标,一共随机6次鼠标闪烁,源码如下:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->/*
*MouseSimulate.java
*
*Createdon2007-5-7,4:03:04
*
*Tochangethistemplate,chooseTools|TemplateManager
*andopenthetemplateintheeditor.
*/
packagecn.edu.yutao;
importjava.awt.AWTException;
importjava.awt.Dimension;
importjava.awt.Robot;
importjava.awt.Toolkit;
importjava.awt.event.InputEvent;
importjava.util.Random;
/**
*
*@authorAslan
*/
publicclassMouseSimulateimplementsRunnable{
privatevolatilebooleanisRunning=false;
privateRobotrobot;
privateDimensiondim;
privateRandomrandom;
publicMouseSimulate(){
random=newRandom();
dim=Toolkit.getDefaultToolkit().getScreenSize();
try{
robot=newRobot();
}catch(AWTExceptione){
e.printStackTrace();
}
}
publicvoidrun(){
while(isRunning){
intx=random.nextInt((int)dim.getWidth());
inty=random.nextInt((int)dim.getHeight());
System.out.println("themouselocatedin("+x+","+y+")");
robot.mouseMove(x,y);
robot.mousePress(InputEvent.BUTTON1_MASK);
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
publicsynchronizedvoidstart(){
isRunning=true;
}
publicsynchronizedvoidstop(){
isRunning=false;
}
publicstaticvoidmain(String[]args){
MouseSimulatetest=newMouseSimulate();
test.start();
System.out.println("-----------timestart-------------");
Threadthread=newThread(test);
thread.start();
try{
Thread.sleep(10000);
}catch(InterruptedExceptione){
e.printStackTrace();
}
test.stop();
System.out.println("-----------timestop--------------");
}
}
Robot类的方法createScreenCapture可以简单的用于抓取屏幕图片,可以在java应用程序中直接调用该方法抓取屏幕,检测远程电脑屏幕状态,这里参考了java社区的例子,默认构造函数生成后缀为png的文件,可以在第二个构造函数传入其他名称,支持gif和jpg。截图程序源码如下:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->/*
*GuiCamera.java
*
*Createdon2007-5-7,4:18:46
*
*Tochangethistemplate,chooseTools|TemplateManager
*andopenthetemplateintheeditor.
*/
packagecn.edu.yutao;
importjava.awt.Dimension;
importjava.awt.Rectangle;
importjava.awt.Robot;
importjava.awt.Toolkit;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjavax.imageio.ImageIO;
/**
*
*@authorAslan
*/
publicclassGuiCamera{
privateStringfileName;
privatefinalStringdefaultFileName="camera";
privateStringformat;
privatefinalStringdefaultFormat="png";
Dimensiondim=Toolkit.getDefaultToolkit().getScreenSize();
publicGuiCamera(){
this.fileName=defaultFileName;
this.format=defaultFormat;
}
publicGuiCamera(StringfileName,Stringformat){
this.fileName=fileName;
this.format=format;
}
publicvoidcapture()throwsException{
BufferedImageimageScreen=(newRobot()).createScreenCapture(newRectangle((int)dim.getWidth(),(int)dim.getHeight()));
StringimageName=this.fileName+"."+this.format;
Filefile=newFile(imageName);
System.out.println("Savefile"+imageName);
ImageIO.write(imageScreen,format,file);
System.out.println("Finished!!");
}
publicstaticvoidmain(String[]args){
GuiCameracamera=newGuiCamera("hello","jpg");
try{
camera.capture();
}catch(Exceptione){
e.printStackTrace();
}
}
}
以上程序都在mac os 10.4.8下测试
分享到:
相关推荐
Java 实现鼠标模拟与键盘映射 在 Java 中实现鼠标模拟与...Java 实现鼠标模拟与键盘映射可以通过使用 Robot 类来实现, Robot 类提供了丰富的方法来模拟鼠标和键盘的输入事件,提高了自动测试和自动化办公的可靠性。
在IT领域,模拟键盘和鼠标的操作是一种常见的自动化测试和脚本编写技术。它允许程序在没有实际物理设备交互的情况下,模拟用户对计算机的操作,如按键、点击等。这种技术在自动化测试、游戏控制、远程桌面操作以及...
游戏手柄键盘映射工具是一种能够让玩家通过游戏手柄来操控原本需要键盘和鼠标操作的游戏的应用软件。这种工具极大地提升了游戏体验,特别是对于喜欢玩横版动作、格斗或者赛车等类型游戏的用户来说,手柄的物理反馈和...
压缩包内的"键盘鼠标映射(驱动级)"可能包含了一些关于如何将键盘和鼠标操作映射到硬件操作的具体实现,这通常涉及到识别键盘和鼠标的硬件协议,以及如何通过WinIo发送正确的控制命令。这部分源码对于学习驱动级...
综上所述,"MFC模拟鼠标键盘程序"通过`mouseevent`和`keybd_event`函数实现了在程序中模拟用户操作的功能,这在自动化测试、游戏控制、辅助工具等领域有广泛应用。结合提供的“使用说明.txt”文件,用户可以更好地...
这通常涉及到解析HID(Human Interface Device)报告描述符,识别鼠标的按钮和滚动事件,并将它们映射到内核的输入事件结构体。开发者可能会使用`input_register_device`来注册这个设备,以便内核可以接收并处理来自...
4. **键盘映射和按键模拟**: 为了实现用两个按键模拟鼠标点击,需要确定哪些键盘按键将被映射为鼠标左键单击和双击。通常,可以使用ASCII码或扫描码来代表这些按键,并在检测到这些按键按下时触发相应的鼠标操作。...
通过这种方式,Java开发者可以利用JNA库在不离开Java语言的舒适区的情况下,实现对鼠标和键盘的控制,这在自动化测试、游戏开发、辅助工具等领域非常有用。同时,由于提供了32位版本,使得在旧系统上也能顺利运行。
winio模拟按键模块,模拟按键wio,开启winio,关闭winio,置鼠标动作,置键盘按键,等待空缓冲,取扫描码,InstallWinIoDriver,RemoveWinIoDriver,openwinio,closewinio,读端口,写端口,开始内存映射,解除内存映射,读内存双字...
该函数可以模拟键盘按键的按下和释放。 1. 引用`user32.dll`库并定义`keybd_event`函数。 ```csharp [DllImport("user32.dll")] public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, ...
“手柄模拟”标签进一步强调了我们要讨论的核心技术,即如何通过键盘和鼠标模拟手柄的功能。手柄模拟软件允许用户将键盘按键或鼠标动作映射到手柄的摇杆、按钮和触发器上,使得电脑识别这些输入如同来自一个真实的...
在计算机编程领域,模拟键盘击键是一项非常实用的技术,它允许程序模拟用户的键盘输入行为,例如在自动化测试、脚本编写或游戏辅助等场景中。在这个VC(Visual C++)程序中,开发者创建了一个功能,使得程序能够自动...
标题中的“USB-HID-20191231_STM32做的USBHID模拟键盘_gpio模拟usb_stm32USBPC_按键模拟usb_”表明这是一个关于使用STM32微控制器实现USB人机交互设备(HID)协议,通过GPIO模拟USB键盘功能的项目,用于向个人计算机...
鼠标模拟软件是一种能够模拟用户鼠标操作的工具,它允许程序或脚本自动执行一系列鼠标点击、移动和滚动等动作。这类软件在自动化测试、数据分析、游戏辅助等领域有着广泛的应用。通过模拟鼠标行为,用户可以节省大量...
在Windows环境下,用户的所有操作,包括键盘输入和鼠标动作,都会被转化为特定的消息,如WM_MOUSEMOVE、WM_LBUTTONDOWN等,这些消息随后会被发送到相应的窗口过程进行处理。消息映射(Message Map)就是定义这些消息...
以下是一个模拟键盘按键的例子: ```csharp [StructLayout(LayoutKind.Sequential)] public struct INPUT { public InputType type; public MouseKeyboardInputUnion u; } [StructLayout(LayoutKind.Explicit)] ...
7. **键盘和鼠标模拟**:在自动化测试或者脚本编写中,有时需要模拟键盘和鼠标操作。这部分可能涉及到如何通过编程模拟按键和鼠标点击,实现自动化任务。 8. **键盘和鼠标事件的异步处理**:在高并发环境下,事件...
1. WinIO库:WinIO是由一系列动态链接库(DLL)组成的,提供了对系统端口的直接访问,包括并行端口、串行端口以及模拟键盘和鼠标等硬件输入设备的功能。 2. 模拟按键:WinIO库中的模拟按键功能,可以模拟用户在键盘...
除此之外,`keybd_event`函数同样重要,它用于模拟键盘事件,可以模拟按键按下和释放的行为。 在提供的内容中,代码示例展示了如何使用Python的`win32api`模块来模拟鼠标拖动操作。首先,导入了`win32api`、`win32...
3. **模拟键盘事件**:解析后的数据被映射成对应的键盘按键事件,如ASCII码对应字母或数字。 4. **注入到应用程序**:通过操作系统API,软件模拟键盘输入,将这些事件注入到前台活动的应用程序中。 5. **错误处理**...