`
lvwz2008
  • 浏览: 28700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

程序里模拟按键敲击

阅读更多
描述: IWindowManager 提供了模拟 KeyEvents的简单方法,名字叫做 IWindowManager.injectKeyEvent(...). 要模拟KeyStroke(按键敲击), 我们需要模拟一个 指定KeyCode 的 KeyEvent.ACTION_DOWN 和 KeyEvent.ACTION_UP 
.
在这个例子里我们将要模拟 Menu按键的 KeyStroke , 以使 Menu 弹出.

下面是这个例子的源码
package org.anddev.android.simualtekeys;

import android.app.Activity;
import android.os.Bundle;
import android.os.DeadObjectException;
import android.os.ServiceManager;
import android.view.IWindowManager;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;

public class SimualteKeyInput extends Activity {

     /* The WindowManager capable of injecting keyStrokes. */
     final IWindowManager windowManager = IWindowManager.Stub
               .asInterface(ServiceManager.getService("window"));

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle icicle) {
          super.onCreate(icicle);
          setContentView(R.layout.main);
          
          /* Make the button do the menu-popup. */
          this.findViewById(R.id.cmd_simulate_key).setOnClickListener(
                    new OnClickListener() {
                         @Override
                         public void onClick(View arg0) {
                              /* Start the key-simulation in a thread
                               * so we do not block the GUI. */
                              new Thread(new Runnable() {
                                   public void run() {
                                        /* Simulate a KeyStroke to the menu-button. */
                                        simulateKeystroke(KeyEvent.KEYCODE_SOFT_LEFT);
                                   }
                              }).start(); /* And start the Thread. */
                         }
                    });
     }
     
     /** Create a dummy-menu. */
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
          boolean supRetVal = super.onCreateOptionsMenu(menu);
          menu.add(0, 0, "Awesome it works =)");
          return supRetVal;
     }

     /** Wrapper-function taking a KeyCode.
      * A complete KeyStroke is DOWN and UP Action on a key! */
     private void simulateKeystroke(int KeyCode) {
          doInjectKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyCode));
          doInjectKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyCode));
     }

     /** This function actually handles the KeyStroke-Injection. */
     private void doInjectKeyEvent(KeyEvent kEvent) {
          try {
               /* Inject the KeyEvent to the Window-Manager. */
               windowManager.injectKeyEvent(kEvent.isDown(), kEvent.getKeyCode(),
                         kEvent.getRepeatCount(), kEvent.getDownTime(), kEvent
                                   .getEventTime(), true);
          } catch (DeadObjectException e) {
               e.printStackTrace();
          }
     }
}


      
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    androidrientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button  id="@+id/cmd_simulate_key"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Simulate Menu Key Press"
    />
</LinearLayout>
分享到:
评论

相关推荐

    vc程序 模拟键盘击键程序

    在计算机编程领域,模拟键盘击键是一项非常实用的技术,它允许程序模拟用户的键盘输入行为,例如在自动化测试、脚本编写或游戏辅助等场景中。在这个VC(Visual C++)程序中,开发者创建了一个功能,使得程序能够自动...

    C# 模拟键盘输入 KeyBoardInput

    `SendInput`允许程序模拟各种用户输入,包括键盘按键。在C#中,我们需要使用P/Invoke(平台调用)技术来导入并使用这个API。 以下是`SendInput`函数的定义: ```csharp [StructLayout(LayoutKind.Sequential)] ...

    C# WPF 模拟键盘输入与UI控件进行交互

    这个函数允许程序模拟用户的键盘敲击行为,就像用户实际按下键盘上的键一样。以下是如何在C#中使用P/Invoke技术来调用`SendInput`函数: ```csharp using System.Runtime.InteropServices; [StructLayout...

    JAVA模拟键盘输入

    在Java编程中,模拟键盘输入是一项实用的技术,它允许程序在不依赖用户交互的情况下自动向系统或应用程序提供输入。这通常用于自动化测试、脚本执行或者其他需要模拟用户操作的场景。下面将详细介绍如何在Java中实现...

    MFC模拟键盘击键程序

    MFC模拟键盘击键程序是利用MFC库来实现的一种技术,它允许程序模拟用户手动输入,即模拟键盘的敲击动作。这种技术在自动化测试、脚本编写或者某些特殊应用中十分有用。 在VC++环境中,开发MFC应用程序通常涉及到...

    Simulation_模拟键盘_WPF模拟按键操作_sendkeys_按键组合_

    标题中的"Simulation_模拟键盘_WPF模拟按键操作_sendkeys_按键组合_"指的是一项利用编程来模拟用户键盘输入的技术,主要应用于Windows Presentation Foundation (WPF) 平台。下面我们将深入探讨这一主题。 首先,`...

    pb9 按F3将文本框内容模拟输入到其他程序中

    标题中的“pb9 按F3将文本框内容模拟输入到其他程序中”指的是在PowerBuilder 9(简称pb9)环境下,通过编程实现一个功能:按下F3热键时,能够...text box)中的内容模拟键盘输入的方式发送到其他正在运行的应用程序中...

    vb编写的驱动级键盘模拟程序代码

    键盘模拟是指程序能够模拟键盘输入的行为,无论是按键按下还是释放,甚至是组合键。这在自动化测试、游戏外挂或脚本编写中非常有用。VB中实现键盘模拟可能需要利用Windows API函数,如`SendInput`,`keybd_event`等...

    VC 实现键盘模拟程序.rar

    标题中的“VC 实现键盘模拟程序”指的是使用Visual C++(简称VC)编程语言开发的一个应用程序,该程序能够模拟键盘输入。在计算机编程领域,键盘模拟通常是指通过软件模拟真实的键盘事件,使得程序可以自动执行键盘...

    VB驱动级别模拟winio带键盘和鼠标的例子

    标题中的“VB驱动级别模拟winio带键盘和鼠标的例子”指的是使用Visual Basic(VB)编程语言,通过WinIO库来实现对硬件设备的低级访问,包括模拟键盘输入和鼠标操作的功能。WinIO是一个非常强大的工具,它允许程序员...

    COM TO KEY,串口输入模拟键盘输入

    用户可能需要配置串口参数(如波特率、数据位、停止位和校验位),指定串口号,然后运行该程序,以便将接收到的串口数据转化为模拟的键盘输入。需要注意的是,使用这类工具时,必须确保安全性和兼容性,避免未经授权...

    python模拟键盘示例

    在Python中,可以使用第三方库...在模拟键盘操作之前,可能需要加入适当的延迟,以确保目标应用程序能够处理键盘输入。 请注意,模拟键盘操作可能会有一定的安全风险,特别是在自动化测试、远程控制等场景中,请谨

    com2 key 模拟键盘输入

    这个描述提到的“COM TO KEY”功能,意味着有一个软件或程序(可能是com2key.exe)能够接收来自COM2串口的数据,并将这些数据转化为键盘输入,就像用户亲自在键盘上敲击一样。这在某些场合非常有用,例如,你可以用...

    archive_C++开发的模拟敲击键盘报语音系统.zip.zip

    在C++中,可以使用各种库(如SFML、SDL或Windows API)来捕获键盘输入。 2. **语音合成**:实现语音播报通常需要用到语音合成技术。TTS(Text-to-Speech)库如Microsoft SAPI、Google Text-to-Speech API或开源的...

    C语言入门例程-模拟键盘打字键盘敲击背景声中逐个输出字符

    为了模拟键盘敲击的背景声,程序可能利用了系统调用或者特定库函数。在C语言中,我们可以使用`system()`函数执行操作系统命令,比如播放音频文件。另外,如果涉及到更底层的声音模拟,可能需要用到像ALSA或SFML这样...

    API模拟发送按键.鼠标动作

    这些函数允许程序模拟键盘和鼠标事件,使得程序可以在没有用户实际操作的情况下模拟键盘敲击和鼠标移动、点击。 1. `SendInput`函数:这是Windows API中用于模拟输入事件的一个高级函数。它可以模拟键盘、鼠标和...

    模拟机械键盘按键音插件

    总结,模拟机械键盘按键音插件通过模拟真实的机械键盘声音,为用户带来了更为丰富和有趣的键盘输入体验。无论是在办公、游戏还是学习场景中,都能让用户享受到仿佛使用机械键盘般的愉悦。然而,在享受的同时,也应...

    dd驱动级键盘模拟模块源码和调用例程(tgp登陆源码)

    驱动级键盘模拟通常用于自动化测试、游戏挂机脚本或者辅助工具等场景,因为它可以精确地模拟键盘敲击,甚至包括按键的按下和释放时间,以及组合键的操作。这种技术的一个关键挑战是如何在不引起系统不稳定或被安全...

    VB自动模拟鼠标点击及键盘热键程序

    总之,VB提供了强大的能力来模拟用户输入,如鼠标点击和键盘热键,这使得开发者可以创建出具有丰富交互性的应用程序。通过理解和掌握这些技术,你可以创建出更智能、更便捷的工具来满足用户需求。

    C++开发的模拟敲击键盘报语音系统.7z

    1. **事件处理**:为了模拟键盘敲击,程序需要捕获用户对键盘的输入事件。在C++中,这通常通过回调函数或者多线程监听键盘事件实现。例如,可以使用Windows API的`GetAsyncKeyState`函数或跨平台的库如SFML、SDL来...

Global site tag (gtag.js) - Google Analytics