精华内容
下载资源
问答
  • 2020-09-29 14:41:41

    一、应用中模拟物理和屏幕点击事件

    例如,模拟对某个view的点击事件

    private void simulateClick(View view, float x, float y) {
        long downTime = SystemClock.uptimeMillis();
        final MotionEvent downEvent = MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_DOWN, x, y, 0);
        downTime += 1000;
        final MotionEvent upEvent = MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_UP, x, y, 0);
        view.onTouchEvent(downEvent);
        view.onTouchEvent(upEvent);
        downEvent.recycle();
        upEvent.recycle();
    }
    
    public void setMouseClick(int x, int y){  
        MotionEvent evenDownt = MotionEvent.obtain(System.currentTimeMillis(),  
                System.currentTimeMillis() + 100, MotionEvent.ACTION_DOWN, x, y, 0);  
        dispatchTouchEvent(evenDownt);  
        MotionEvent eventUp = MotionEvent.obtain(System.currentTimeMillis(),  
                System.currentTimeMillis() + 100, MotionEvent.ACTION_UP, x, y, 0);  
        dispatchTouchEvent(eventUp);  
        evenDownt.recycle();  
        eventUp.recycle();  
    }

    这实现原理就是模拟两个MotionEvent (按下和提起) 然后用一个View 来处理这个Event 。

    二、Instrumentation实现模拟键盘鼠标事件

    // 可以不用在 Activity 中增加任何处理,各 Activity 都可以响应  
    Instrumentation inst = new Instrumentation();  
    inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),   
        MotionEvent.ACTION_DOWN, 200, 500, 0));  
    inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),   
        MotionEvent.ACTION_UP, 200, 500, 0));

    三、系统中模拟物理和屏幕点击事件

    1、adb shell 进入手机命令行 
    2、getevent -h 用法说明

    shell@hwH60:/ $ getevent -h  
    
    Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
        -t: show time stamps
        -n: don't print newlines
        -s: print switch states for given bits
        -S: print all switch states
        -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64)
        -d: show HID descriptor, if available
        -p: show possible events (errs, dev, name, pos. events)
        -i: show all device info and possible events
        -l: label event types and names in plain text
        -q: quiet (clear verbosity mask)
        -c: print given number of events then exit
        -r: print rate events are received

    [-t] 参数显示事件的时间戳 
    [-n] 取消事件显示时的换行符 
    [-s switchmask] 得到指定位的开关状态 
    [-S] 得到所有开关的状态 
    [-v [mask]] 根据mask的值显示相关信息 
    [-p] 显示每个设备支持的事件类型和编码 
    [-q] 只显示事件数据 
    [-c count] 只显示count次事件的数据 
    [-r] 显示事件接收频率

    3、getevent -p 显示出来当前系统存在的所有input设备,并且把每个设备支持的事件类型以及编码

    shell@hwH60:/ $ getevent -p
    
    add device 1: /dev/input/event2
      name:     "hi6421_on"
      events:
        KEY (0001): 0074 
      input props:
        <none>
    could not get driver version for /dev/input/mouse0, Not a typewriter
    add device 2: /dev/input/event4
      name:     "huawei,touchscreen"
      events:
        KEY (0001): 003b  003c  003d  003e  003f  0040  0041  0042 
                    0043  0044  0057  00bd  00be  00bf  00c0  00c1 
                    0145  014a 
        ABS (0003): 0000  : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0
                    0001  : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0
                    0018  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
                    0030  : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0
                    0035  : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0
                    0036  : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0
                    0039  : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0
                    003a  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
      input props:
        INPUT_PROP_DIRECT
    add device 3: /dev/input/event0
      name:     "mhl_rcp_dev"
      events:
        KEY (0001): 0002  0003  0004  0005  0006  0007  0008  0009 
                    000a  000b  000e  001c  0034  003b  003c  003d 
                    003e  003f  0067  0069  006a  006c  0071  0072 
                    0073  0077  0080  008b  009e  009f  00a1  00a4 
                    00a5  00a7  00a8  00ae  00c8  00c9  00cf  00d0 
                    00d5  00e8  0161  0163  0192  0193  019c 
      input props:
        <none>
    could not get driver version for /dev/input/mice, Not a typewriter
    add device 4: /dev/input/event1
      name:     "hisi_gpio_key.14"
      events:
        KEY (0001): 0072  0073 
      input props:
        <none>
    add device 5: /dev/input/event3
      name:     "hi3630_hi6401_CARD Headset Jack"
      events:
        KEY (0001): 0072  0073  00e2 
        SW  (0005): 0002  0004 
      input props:
        <none>

    4、getevent 查看输入设备和查看事件 
    打印输出log日志,等待输入设备,我们触摸屏幕或是手机物理按键,便会看到这里的变化

    shell@hwH60:/ $ getevent
    
    例如:
    /dev/input/event0: 0001 014a 00000001
    /dev/input/event0: 0003 0000 000000f6
    /dev/input/event0: 0003 0001 000002ed
    /dev/input/event0: 0003 0035 000000f6
    /dev/input/event0: 0003 0036 000002ed
    /dev/input/event0: 0003 0032 00000001
    /dev/input/event0: 0003 0039 00000000
    /dev/input/event0: 0003 003a 00000043
    /dev/input/event0: 0000 0002 00000000

    他们四个参数对应的是device type code value 
    device:指的是处理触摸和按键的输入设备。 
    type:指的是事件类型,EV_SYN [0000] (同步事件),EV_KEY [0001] (按键事件),EV_ABS [0003] (绝对值事件) 
    code 指的是前面type代表的事件中支持的编码。 
    value 指的是值。

    例如:需要模拟一次点击BACK键,模拟点击的功能通常都是使用 /dev/input/event0 这个输入设备,back键的类型为 0001(按键事件),BACK的编码为 0x9e 转换为十进制后即158

    注意的是在getevent中code显示的是十六进制,而sendevent时需要用十进制

    那我们输入如下命令即可模拟一次BACK键的按下和弹起:

    adb shell sendevent /dev/input/event0 1 158 1
    adb shell sendevent /dev/input/event0 1 158 0

    5、input keyevent 命令

    先列举 input keyevent 几个比较常用的code值:

    input keyevent 3    // Home
    
    input keyevent 4    // Back
    
    input keyevent 19  //Up
    
    input keyevent 20  //Down
    
    input keyevent 21  //Left
    
    input keyevent 22  //Right
    
    input keyevent 23  //Select/Ok
    
    input keyevent 24  //Volume+
    
    input keyevent 25  // Volume-
    
    input keyevent 82  // Menu 菜单

    例如: 
    点击back键

    shell@hwH60:/ $ input keyevent 3 

    input text 命令 
    输入框输入内容的。后面参数为 “字符串”,例如输入”helloworld”字符串

    shell@hwH60:/ $ input text "helloworld!"

    input tap 命令 
    模拟单击事件 后面参数为: x y ,例如点击(168,252)位置

    shell@hwH60:/ $ input tap 168 252  

    input swipe 命令 
    此命令为滑动事件。例如:从 30 10 滑动到 30 100

    shell@hwH60:/ $ input swipe 30 10 30 100

    Android代码实现,注意需要root

    private void execShellCmd(String cmd) {  
        try {  
            // 申请获取root权限,这一步很重要,不然会没有作用  
            Process process = Runtime.getRuntime().exec("su");  
            // 获取输出流  
            OutputStream outputStream = process.getOutputStream();  
            DataOutputStream dataOutputStream = new DataOutputStream(  
                    outputStream);  
            dataOutputStream.writeBytes(cmd);  
            dataOutputStream.flush();  
            dataOutputStream.close();  
            outputStream.close();  
        } catch (Throwable t) {  
            t.printStackTrace();  
        }  
    }
    execShellCmd("getevent -p");  
    execShellCmd("sendevent /dev/input/event0 1 158 1");  
    execShellCmd("sendevent /dev/input/event0 1 158 0");  
    execShellCmd("input keyevent 3");//home  
    execShellCmd("input text  'helloworld!' ");  
    execShellCmd("input tap 168 252");  
    execShellCmd("input swipe 100 250 200 280");
    <uses-permission android:name = "android.permission.INJECT_EVENTS"/>

     

    更多相关内容
  • 我在实现安卓模拟点击屏幕固定位置时尝试了很多方法,碰了不少壁,现在我将我实现的方法分享给大家,以及我尝试过的方法也分享给大家,让大家在开发的路上少走些弯路。 首先我尝试用安卓辅助功能Accessibility...

             我在实现安卓模拟点击屏幕固定位置时尝试了很多方法,碰了不少壁,现在我将我实现的方法分享给大家,以及我尝试过的方法也分享给大家,让大家在开发的路上少走些弯路。

    首先我尝试用安卓辅助功能AccessibilityService类实现模拟屏幕点击,但是这个类只能找到页面的控件,然后对控件进行模拟点击,不能实现对屏幕的某个位置进行点击,这个方法失败后我就试了另一种Instrumentation方法,这种方法确实可以点击屏幕上任何位置,而且点击事件可以生效,但是退出程序就不能进行了,程序出现错误,提示没有INJECT_EVENTS权限,但是加入INJECT_EVENTS权限后,还是出错,查了一下资料,说可以在添加android:sharedUserId="android.uid.system"获取系统共享签名,但是加入后生成的APK无法安装的手机上。

    使用Instrumentation方法点击手机屏幕的任何位置

    import java.io.IOException;
     
    import android.app.Instrumentation;
    import android.os.SystemClock;
    import android.util.Log;
    import android.view.MotionEvent;
     
    public class ThreadClass extends Thread {
        private int x,y;
        //400,689
        @Override
        public void run() {
            while(true)
            {            
                //利用ProcessBuilder执行shell命令
                /*String[] order = {
                        "input",
                        "tap",
                        "" + x,
                        "" + y
                };
                Log.d("点击位置", x+","+y);
                try {
                    new ProcessBuilder(order).start();
                } catch (IOException e) {
                    e.printStackTrace();
                }*/
                // 可以不用在 Activity 中增加任何处理,各 Activity 都可以响应 
                 try {  
                    Instrumentation inst = new Instrumentation();  
                    inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),   
                        MotionEvent.ACTION_DOWN, x, y, 0));  
                    inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),   
                        MotionEvent.ACTION_UP, x, y, 0));
                    Log.d("点击位置", x+","+y);
                 }catch(Exception e) {  
                     Log.e("Exception when sendPointerSync", e.toString());  
                 }  
                //线程睡眠3s
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
     
        }
        public ThreadClass(int x,int y){
            this.x=x;
            this.y=y;
        }
    }


    其中x,y是需要点击的屏幕左边,以左上角为原点的直角坐标系统
    加入INJECT_EVENTS权限

    <uses-permission android:name="android.permission.INJECT_EVENTS"/>
    添加android:sharedUserId="android.uid.system"位置如下,写安卓的应该都可以明白

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.clickservice"
        android:versionCode="1"
        android:versionName="1.0" 
        android:sharedUserId="android.uid.system"
        >

            为了解决这个错误,我按照网上说的方法进行,使用安卓签名工具SignApk.jar对编译的apk进行签名,签名后的APK还是无法安装在手机上,还有一种解决这问题的方法就是使用android源码编译,相信这种方法会让大多数人无从下手,光将android源码编译的环境搭配起来都不是一件容易的事,有兴趣的可以尝试一下这种方法,下面就步入我们今天要讲的主题adb shell。
    首先我们在windows下通过adb shell控制手机,在此之前,保证你的手机已经连接电脑,进入eclipse adt开发环境下的adb所在文件目录,以我的为例,路径为..\adt-bundle-windows-x86-20130917\sdk\platform-tools,以下是我的目录截图,可以对着找到该目录。


            在该目录下,按下shift键后点击鼠标右键,在弹出窗口中选择“在此处打开命令窗口(W)”,也可以直接cmd进入这目录,在命令窗口输入:adb shell 进入adb shell命令状态,此后就可以用shell命令控制你的手机了。

    我在此就简单介绍一些命令,要想详细了解的去下面两篇博客

    自己动手开发精简版按键精灵

    Android模拟屏幕点击事件

    getevent -p 
    查看哪个设备包含event 体系里 宽(0035)和高(0036),那么这个设备就是我们的安卓手机,例如这里的设备名称为/dev/input/event1


    模拟发送事件
    getevent/sendevent是Android系统下的一个工具,可以模拟多种按键和触屏操作,产生的是raw event,raw event经过event hub处理产生最终的gesture事件。getevent用于获取当前系统input设备的一些参数和实时事件的数据;sendevent用于发送input事件,这俩命令的作用就是相当于解放了手,可以通过命令直接调用Linux底层来控制手机,工具的源码位于Android SDK的system/core/toolbox下(sendevent.c getevent.c)。

    发送键盘事件 
    用法说明: 
    adb shell input keyevent “value” 
    input text 
    input keyevent 
    input tap 
    input swipe 
    如上,input后可以跟很多参数, text相当于输入内容,keyevent相当于手机物理或是屏幕按键,tap相当于touch事件,swipe相当于滑动~~是不是很赞?先列举 input keyevent 几个比较常用的code值: 
    input keyevent 3 // Home 
    input keyevent 4 // Back 
    input keyevent 19 //Up 
    input keyevent 20 //Down 
    input keyevent 21 //Left 
    input keyevent 22 //Right 
    input keyevent 23 //Select/Ok 
    input keyevent 24 //Volume+ 
    input keyevent 25 // Volume- 
    input keyevent 82 // Menu 菜单

    附:input keyevent所对应全部key值:

    KeyCode Keyevent Value

    KEYCODE_MENU 1 
    KEYCODE_SOFT_RIGHT 2 
    KEYCODE_HOME 3 
    KEYCODE_BACK 4 
    KEYCODE_CALL 5 
    KEYCODE_ENDCALL 6 
    KEYCODE_0 7 
    KEYCODE_1 8 
    KEYCODE_2 9 
    KEYCODE_3 10 
    KEYCODE_4 11 
    KEYCODE_5 12 
    KEYCODE_6 13 
    KEYCODE_7 14 
    KEYCODE_8 15 
    KEYCODE_9 16 
    KEYCODE_STAR 17 
    KEYCODE_POUND 18 
    KEYCODE_DPAD_UP 19 
    KEYCODE_DPAD_DOWN 20 
    KEYCODE_DPAD_LEFT 21 
    KEYCODE_DPAD_RIGHT 22 
    KEYCODE_DPAD_CENTER 23 
    KEYCODE_VOLUME_UP 24 
    KEYCODE_VOLUME_DOWN 25 
    KEYCODE_POWER 26 
    KEYCODE_CAMERA 27 
    KEYCODE_CLEAR 28 
    KEYCODE_A 29 
    KEYCODE_B 30 
    KEYCODE_C 31 
    KEYCODE_D 32 
    KEYCODE_E 33 
    KEYCODE_F 34 
    KEYCODE_G 35 
    KEYCODE_H 36 
    KEYCODE_I 37 
    KEYCODE_J 38 
    KEYCODE_K 39 
    KEYCODE_L 40 
    KEYCODE_M 41 
    KEYCODE_N 42 
    KEYCODE_O 43 
    KEYCODE_P 44 
    KEYCODE_Q 45 
    KEYCODE_R 46 
    KEYCODE_S 47 
    KEYCODE_T 48 
    KEYCODE_U 49 
    KEYCODE_V 50 
    KEYCODE_W 51 
    KEYCODE_X 52 
    KEYCODE_Y 53 
    KEYCODE_Z 54 
    KEYCODE_COMMA 55 
    KEYCODE_PERIOD 56 
    KEYCODE_ALT_LEFT 57 
    KEYCODE_ALT_RIGHT 58 
    KEYCODE_SHIFT_LEFT 59 
    KEYCODE_SHIFT_RIGHT 60 
    KEYCODE_TAB 61 
    KEYCODE_SPACE 62 
    KEYCODE_SYM 63 
    KEYCODE_EXPLORER 64 
    KEYCODE_ENVELOPE 65 
    KEYCODE_ENTER 66 
    KEYCODE_DEL 67 
    KEYCODE_GRAVE 68 
    KEYCODE_MINUS 69 
    KEYCODE_EQUALS 70 
    KEYCODE_LEFT_BRACKET 71 
    KEYCODE_RIGHT_BRACKET 72 
    KEYCODE_BACKSLASH 73 
    KEYCODE_SEMICOLON 74 
    KEYCODE_APOSTROPHE 75 
    KEYCODE_SLASH 76 
    KEYCODE_AT 77 
    KEYCODE_NUM 78 
    KEYCODE_HEADSETHOOK 79 
    KEYCODE_FOCUS 80 
    KEYCODE_PLUS 81 
    KEYCODE_MENU 82 
    KEYCODE_NOTIFICATION 83 
    KEYCODE_SEARCH 84 
    TAG_LAST_KEYCODE 85

    通过以上的介绍你应该对adb shell命令有所了解了吧,但是如何用代码来实现呢,以下就是代码执行shell命令

    /** 
     * 执行shell命令 
     *  
     * @param cmd 
     */  
    private void execShellCmd(String cmd) {  
      
        try {  
            // 申请获取root权限,这一步很重要,不然会没有作用  
            Process process = Runtime.getRuntime().exec("su");  
            // 获取输出流  
            OutputStream outputStream = process.getOutputStream();  
            DataOutputStream dataOutputStream = new DataOutputStream(  
                    outputStream);  
            dataOutputStream.writeBytes(cmd);  
            dataOutputStream.flush();  
            dataOutputStream.close();  
            outputStream.close();  
        } catch (Throwable t) {  
            t.printStackTrace();  
        }  
    } 

     

    在想要执行的地方调用上面函数:
    execShellCmd("getevent -p");  
    execShellCmd("sendevent /dev/input/event1 1 158 1");  
    execShellCmd("sendevent /dev/input/event1 1 158 0");  
    execShellCmd("input keyevent 3");//home  
    execShellCmd("input text  'helloworld!' ");  
    execShellCmd("input tap 168 252");  
    execShellCmd("input swipe 100 250 200 280");  

    注意使用sendevent执行事件时,可以看到sendevent需要4个参数即:device,type,code,value。这些值可以由input子系统定义,也可以从getevent里面获取。type其实就是和getevent中的支持事件类型所对应的, value=1是按下,value=0是弹起,也就是说只有当两个命令同时执行时命令才会生效,也就是下面两句要先后一并执行
    execShellCmd("sendevent /dev/input/event1 1 158 1");  
    execShellCmd("sendevent /dev/input/event1 1 158 0"); 

    如果要退出程序后,继续执行模拟点击屏幕,只要写一个后台运行的Service挂在后台运行即可,到此模拟点击手机屏幕的功能就实现了。因为写这篇文章的时候,经验不足,请大家多多指教

     

    本文章对应程序,实现按键精灵模拟点击源码:http://download.csdn.net/download/yuanhengzhw/10254876

    展开全文
  • 最近有个需求,需要在页面上面自动点击、输入、提交。 用以模拟真实用户的操作行为,可以通过直接执行某个元素绑定的事件,来执行操作。 也可以创建事件,再派发事件,执行操作。关于事件的更多细节,可以参考...
  • 有些游戏直接用au3里面的模拟点击/按键都是无效的,包括qq2007也是无法实现,下面是一个解决方法,具体实现方法(vb的),想改成au3的,还没成功,有兴趣的朋友也来试试.驱动级模拟 如果上面的方法你都试过了,可是你发现...


    有些游戏直接用au3里面的模拟点击/按键都是无效的,包括qq2007也是无法实现,下面是一个解决方法,具体实现方法(vb的),想改成au3的,还没成功,有兴趣的朋友也来试试.
    驱动级模拟

         如果上面的方法你都试过了,可是你发现目标程序却仍然顽固的不接受你模拟的消息,寒~~~~~~~~~还好,我还剩下最后一招,这就是驱动级模拟:直接读写键盘的硬件端口!
         有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时性控制的要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式的,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消息,这个速度达不到游戏的要求。而DirectInput则绕过了windows消息,直接与键盘驱动程序打交道,效率当然提高了不少。因此也就造成,对这样的程序无论用PostMessage或者是keybd_event都不会有反应,因为这些函数都在较高层。对于这样的程序,只好用直接读写键盘端口的方法来模拟硬件事件了。要用这个方法来模拟键盘,需要先了解一下键盘编程的相关知识。
         在DOS时代,当用户按下或者放开一个键时,就会产生一个键盘中断(如果键盘中断是允许的),这样程序会跳转到BIOS中的键盘中断处理程序去执行。打开windows的设备管理器,可以查看到键盘控制器由两个端口控制。其中&H60是数据端口,可以读出键盘数据,而&H64是控制端口,用来发出控制信号。也就是,从&H60号端口可以读此键盘的按键信息,当从这个端口读取一个字节,该字节的低7位就是按键的扫描码,而高1位则表示是按下键还是释放键。当按下键时,最高位为0,称为通码,当释放键时,最高位为1,称为断码。既然从这个端口读数据可以获得按键信息,那么向这个端口写入数据就可以模拟按键了!用过QbASIC4.5的朋友可能知道,QB中有个OUT命令可以向指定端口写入数据,而INP函数可以读取指定端口的数据。那我们先看看如果用QB该怎么写代码:
    假如你想模拟按下一个键,这个键的扫描码为&H50,那就这样
    OUT &H64,&HD2    '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,&H50    '把扫描码&H50发送到&H60端口,表示模拟按下扫描码为&H50的这个键
    那么要释放这个键呢?像这样,发送该键的断码:
    OUT &H64,&HD2    '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,(&H50 OR &H80)    '把扫描码&H50与数据&H80进行或运算,可以把它的高位置1,得到断码,表示释放这个键
    2007-4-19 02:08 wyh1983
    好了,现在的问题就是在VB中如何向端口写入数据了。因为在windows中,普通应用程序是无权操作端口的,于是我们就需要一个驱动程序来帮助我们实现。在这里我们可以使用一个组件WINIO来完成读写端口操作。什么是WINIO?WINIO是一个全免费的、无需注册的、含源程序的WINDOWS2000端口操作驱动程序组件(可以到http://www.internals.com/上去下载)。它不仅可以操作端口,还可以操作内存;不仅能在VB下用,还可以在DELPHI、VC等其它环境下使用,性能特别优异。下载该组件,解压缩后可以看到几个文件夹,其中Release文件夹下的3个文件就是我们需要的,这3个文件是WinIo.sys(用于win xp下的驱动程序),WINIO.VXD(用于win 98下的驱动程序),WinIo.dll(封装函数的动态链接库),我们只需要调用WinIo.dll中的函数,然后WinIo.dll就会安装并调用驱动程序来完成相应的功能。值得一提的是这个组件完全是绿色的,无需安装,你只需要把这3个文件复制到与你的程序相同的文件夹下就可以使用了。用法很简单,先用里面的InitializeWinIo函数安装驱动程序,然后就可以用GetPortVal来读取端口或者用SetPortVal来写入端口了。好,让我们来做一个驱动级的键盘模拟吧。先把winio的3个文件拷贝到你的程序的文件夹下,然后在VB中新建一个工程,添加一个模块,在模块中加入下面的winio函数声明eclare Function MapPhysToLin Lib 'WinIo.dll' (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long
    Declare Function UnmapPhysicalMemory Lib 'WinIo.dll' (ByVal PhysMemHandle, ByVal LinAddr) As Boolean
    Declare Function GetPhysLong Lib 'WinIo.dll' (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean
    Declare Function SetPhysLong Lib 'WinIo.dll' (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean
    Declare Function GetPortVal Lib 'WinIo.dll' (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function SetPortVal Lib 'WinIo.dll' (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function InitializeWinIo Lib 'WinIo.dll' () As Boolean
    Declare Function ShutdownWinIo Lib 'WinIo.dll' () As Boolean
    Declare Function InstallWinIoDriver Lib 'WinIo.dll' (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean
    Declare Function RemoveWinIoDriver Lib 'WinIo.dll' () As Boolean
    ' ------------------------------------以上是WINIO函数声明-------------------------------------------
    Declare Function MapVirtualKey Lib 'user32' Alias 'MapVirtualKeyA' (ByVal wCode As Long, ByVal wMapType As Long) As Long
    '-----------------------------------以上是WIN32 API函数声明-----------------------------------------
    再添加下面这个过程:
    Sub KBCWait4IBE()    '等待键盘缓冲区为空
    Dim dwVal As Long
       Do
       GetPortVal &H64, dwVal, 1
    '这句表示从&H64端口读取一个字节并把读出的数据放到变量dwVal中
    'GetPortVal函数的用法是GetPortVal 端口号,存放读出数据的变量,读入的长度
       Loop While (dwVal And &H2)
    End Sub
    上面的是一个根据KBC规范写的过程,它的作用是在向键盘端口写入数据前等待一段时间,后面将会用到。
    然后再添加如下过程,这2个过程用来模拟按键:
    Public Const KBC_KEY_CMD = &H64     '键盘命令端口
    Public Const KBC_KEY_DATA = &H60    '键盘数据端口
    Sub MyKeyDown(ByVal vKeyCoad As Long)  
    '这个用来模拟按下键,参数vKeyCoad传入按键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
     
         KBCWait4IBE    '发送数据前应该先等待键盘缓冲区为空
         SetPortVal KBC_KEY_CMD, &HD2, 1      '发送键盘写入命令
    'SetPortVal函数用于向端口写入数据,它的用法是SetPortVal 端口号,欲写入的数据,写入数据的长度
         KBCWait4IBE
         SetPortVal KBC_KEY_DATA, btScancode, 1   '写入按键信息,按下键
       
    End Sub
    Sub MyKeyUp(ByVal vKeyCoad As Long)  
    '这个用来模拟释放键,参数vKeyCoad传入按键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
     
         KBCWait4IBE    '等待键盘缓冲区为空
         SetPortVal KBC_KEY_CMD, &HD2, 1   '发送键盘写入命令
         KBCWait4IBE
         SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1   '写入按键信息,释放键
    End Sub

    定义了上面的过程后,就可以用它来模拟键盘输入了。在窗体模块中添加一个定时器控件,然后加入以下代码:

    Private Sub Form_Load()
    If InitializeWinIo = False Then  
       '用InitializeWinIo函数加载驱动程序,如果成功会返回true,否则返回false
         MsgBox '驱动程序加载失败!'
         Unload Me
    End If
    Timer1.Interval=3000
    Timer1.Enabled=True
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    ShutdownWinIo '程序结束时记得用ShutdownWinIo函数卸载驱动程序
    End Sub
    Private Sub Timer1_Timer()
    Dim VK_A as Long = &H41
    MyKeyDown VK_A   
    MyKeyUp VK_A     '模拟按下并释放A键
    End Sub
    [/quote]
    运行上面的程序,就会每隔3秒钟模拟按下一次A键,试试看,怎么样,是不是对所有程序都有效果了?
    需要注意的问题:
    要在VB的调试模式下使用WINIO,需要把那3个文件拷贝到VB的安装目录中。
    键盘上有些键属于扩展键(比如键盘上的方向键就是扩展键),对于扩展键不应该用上面的MyKeyDown和MyKeyUp过程来模拟,可以使用下面的2个过程来准确模拟扩展键:

    QUOTE:
    Sub MyKeyDownEx(ByVal vKeyCoad As Long)    '模拟扩展键按下,参数vKeyCoad是扩展键的虚拟码
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
         KBCWait4IBE    '等待键盘缓冲区为空
         SetPortVal KBC_KEY_CMD, &HD2, 1      '发送键盘写入命令
         KBCWait4IBE
         SetPortVal KBC_KEY_DATA, &HE0, 1   '写入扩展键标志信息
       
       
         KBCWait4IBE    '等待键盘缓冲区为空
         SetPortVal KBC_KEY_CMD, &HD2, 1      '发送键盘写入命令
         KBCWait4IBE
         SetPortVal KBC_KEY_DATA, btScancode, 1   '写入按键信息,按下键
       
       
    End Sub

    Sub MyKeyUpEx(ByVal vKeyCoad As Long)    '模拟扩展键弹起
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)
         KBCWait4IBE    '等待键盘缓冲区为空
         SetPortVal KBC_KEY_CMD, &HD2, 1      '发送键盘写入命令
         KBCWait4IBE
         SetPortVal KBC_KEY_DATA, &HE0, 1   '写入扩展键标志信息
       
       
         KBCWait4IBE    '等待键盘缓冲区为空
         SetPortVal KBC_KEY_CMD, &HD2, 1      '发送键盘写入命令
         KBCWait4IBE
         SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1   '写入按键信息,释放键
       
    End Sub
    还应该注意的是,如果要从扩展键转换到普通键,那么普通键的KeyDown事件应该发送两次。也就是说,如果我想模拟先按下一个扩展键,再按下一个普通键,那么就应该向端口发送两次该普通键被按下的信息。比如,我想模拟先按下左方向键,再按下空格键这个事件,由于左方向键是扩展键,空格键是普通键,那么流程就应该是这样的:
    [quote]MyKeyDownEx VK_LEFT    '按下左方向键
    Sleep 200              '延时200毫秒
    MyKeyUpEx VK_LEFT      '释放左方向键
    Sleep 500
    MyKeyDown VK_SPACE    '按下空格键,注意要发送两次
    MyKeyDown VK_SPACE
    Sleep 200
    MyKeyUp VK_SPACE      '释放空格键


    好了,相信到这里,你的模拟按键程序也就差不多了,测试一下,是不是很有效呢,嘿嘿~~~~
    WINIO组件的下载地址(官方):http://www.internals.com/utilities/winio.zip

    转载于:https://www.cnblogs.com/zhaoshujie/archive/2008/10/06/9594829.html

    展开全文
  • Key管理设备按键事件

    千次阅读 2022-02-08 10:25:44
    Key管理设备按键事件

    方法:

    对象:

    回调方法:

    权限:

    5+功能模块(permissions)

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#ffffff">{</span>
    <span style="color:#87ceeb">// ...</span>
    <span style="color:#ffa0a0">"permissions"</span><span style="color:#ffffff">:{</span>
    	<span style="color:#87ceeb">// ...</span>
    	<span style="color:#ffa0a0">"Webview"</span><span style="color:#ffffff">:</span> <span style="color:#ffffff">{</span>
    		<span style="color:#ffa0a0">"description"</span><span style="color:#ffffff">:</span> <span style="color:#ffa0a0">"窗口管理"</span>
    	<span style="color:#ffffff">}</span>
    <span style="color:#ffffff">}</span>
    <span style="color:#ffffff">}</span>
    			</code></span></span>

    addEventListener

    添加按键事件监听器

    <span style="background-color:#333333"><span style="color:#474747"><code><span style="color:#ffffff">
    plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> keyevent</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> listener</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> capture </span><span style="color:#ffffff">);</span>
    				</code></span></span>

    说明:

    添加按键事件监听器,当指定的按键事件发生时,回调函数将触发。 应用中存在多个Webview窗口时,按照窗口的显示栈顺序从后往前查找,查找到添加按键事件监听器的窗口后停止(中断前面Webview窗口对按键事件的监听),并向窗口触发执行按键回调事件。 在同一Webview窗口中可多次调用此方法对同一事件添加多个监听器,触发时按照添加的顺序先后调用。 注意:此方法无法监听软键盘的按键事件。

    参数:

    • event: KeyType ) 必选 要监听的按键事件类型

    • listener: KeyEventCallback ) 必选 监听按键事件发生时调用的回调函数

    • capture: ( Boolean ) 可选 捕获按键事件流顺序,暂作为保留参数

    返回值:

    void : 无

    示例:

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#cccccc"><!DOCTYPE html></span>
    <span style="color:#f0e68c"><strong><html></strong></span>
    	<span style="color:#f0e68c"><strong><head></strong></span>
    	<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
    	<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Key Example</span><span style="color:#f0e68c"><strong></title></strong></span>
    	<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
    <span style="color:#87ceeb">// 监听“返回”按钮事件</span>
    <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> addEventTest</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
    	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"backbutton"</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(){</span><span style="color:#ffffff">
    		alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"BackButton Key pressed!"</span> <span style="color:#ffffff">);</span>
    	<span style="color:#ffffff">});</span>
    <span style="color:#ffffff">}</span>
    	<span style="color:#f0e68c"><strong></script></strong></span>
    	<span style="color:#f0e68c"><strong></head></strong></span>
    	<span style="color:#f0e68c"><strong><body></strong></span>
    		<span style="color:#f0e68c"><strong><button</strong></span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">addEventTest</span><span style="color:#ffffff">()</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">监听“返回”按键</span><span style="color:#f0e68c"><strong></button></strong></span>
    	<span style="color:#f0e68c"><strong></body></strong></span>
    <span style="color:#f0e68c"><strong></html></strong></span>
    				</code></span></span>

    uni-app使用plus注意事项

    hideSoftKeybord

    隐藏软键盘

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">hideSoftKeybord</span><span style="color:#ffffff">();</span>
    				</code></span></span>

    说明:

    隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。

    参数:

    返回值:

    void : 无

    示例:

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#cccccc"><!DOCTYPE html></span>
    <span style="color:#f0e68c"><strong><html></strong></span>
    	<span style="color:#f0e68c"><strong><head></strong></span>
    	<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
    	<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Key Example</span><span style="color:#f0e68c"><strong></title></strong></span>
    	<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
    <span style="color:#87ceeb">// H5 plus事件处理</span>
    <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">(){</span>
    <span style="color:#ffffff">}</span>
    <span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">window</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
    	plusReady</span><span style="color:#ffffff">();</span>
    <span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong>else</strong></span><span style="color:#ffffff">{</span><span style="color:#ffffff">
    	document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'plusready'</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
    <span style="color:#ffffff">}</span>
    	<span style="color:#f0e68c"><strong></script></strong></span>
    	<span style="color:#f0e68c"><strong></head></strong></span>
    	<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
    		编辑框:</span><span style="color:#f0e68c"><strong><input</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text"</span> <span style="color:#bdb76b"><strong>placeholder</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"请输入"</span><span style="color:#f0e68c"><strong>></input><br/></strong></span>
    		<span style="color:#f0e68c"><strong><button</strong></span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">hideSoftKeybord</span><span style="color:#ffffff">()</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">隐藏软键盘</span><span style="color:#f0e68c"><strong></button><br/></strong></span>
    	<span style="color:#f0e68c"><strong></body></strong></span>
    <span style="color:#f0e68c"><strong></html></strong></span>
    				</code></span></span>

    uni-app使用plus注意事项

    setAssistantType

    设置辅助输入类型

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">setAssistantType</span><span style="color:#ffffff">(</span><span style="color:#ffffff">type</span><span style="color:#ffffff">);</span>
    				</code></span></span>

    说明:

    input的type类型为text获取焦点时,在软键盘上方显示辅助输入条方便用户快速输入。 在页面中input编辑框type类型不为"tel"、"email"时生效(type为tel类型时一定显示tel的辅助输入条,type为email时一定显示email的辅助输入条)。

    参数:

    • type: ( String ) 必选 辅助输入类型

      可取值: "nick" - 用户名(昵称)类型,自动保存最后输入的两个用户名,并在辅助输入条上显示; "address" - 地址类型,在辅助输入条上显示当前位置(定位获取)、家庭地址(在设置界面中配置)、单位地址(在设置界面中配置); "tel" - 电话号码类型,自动保存最后两次输入的两个手机号码显示在辅助输入条上,与input的type类型为tel逻辑一致; "email" - 邮箱地址类型,自动保存最后两次输入的两个邮箱地址显示在辅助输入条上,与Input的type类型为email逻辑一致; "company" - 公司名称类型,自动保存最后一次输入的公司名称显示在辅助输入条上; "tax" - 税号类型,自动保存最后一次输入的企业税务标识显示在辅助输入条上; "id" - 身份证号码类型,自动保存最后一次输入的身份证号显示在辅助输入条上; "none" - 不使用辅助输入。

    返回值:

    void : 无

    示例:

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#cccccc"><!DOCTYPE html></span>
    <span style="color:#f0e68c"><strong><html></strong></span>
    	<span style="color:#f0e68c"><strong><head></strong></span>
    	<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
    	<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Key Example</span><span style="color:#f0e68c"><strong></title></strong></span>
    	<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
    <span style="color:#87ceeb">// H5 plus事件处理</span>
    <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">(){</span>
    <span style="color:#ffffff">}</span>
    <span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">window</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
    	plusReady</span><span style="color:#ffffff">();</span>
    <span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong>else</strong></span><span style="color:#ffffff">{</span><span style="color:#ffffff">
    	document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'plusready'</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
    <span style="color:#ffffff">}</span>
    	<span style="color:#f0e68c"><strong></script></strong></span>
    	<span style="color:#f0e68c"><strong></head></strong></span>
    	<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
    		用户名编辑框:</span><span style="color:#f0e68c"><strong><input</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text"</span> <span style="color:#bdb76b"><strong>onfocus</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">setAssistantType</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'nick'</span><span style="color:#ffffff">)</span><span style="color:#ffa0a0">"</span> <span style="color:#bdb76b"><strong>onblur</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">setAssistantType</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'none'</span><span style="color:#ffffff">)</span><span style="color:#ffa0a0">"</span> <span style="color:#bdb76b"><strong>placeholder</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"请输入用户名"</span><span style="color:#f0e68c"><strong>></input><br/></strong></span><span style="color:#ffffff">
    		地址编辑框:</span><span style="color:#f0e68c"><strong><input</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text"</span> <span style="color:#bdb76b"><strong>onfocus</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">setAssistantType</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'address'</span><span style="color:#ffffff">)</span><span style="color:#ffa0a0">"</span> <span style="color:#bdb76b"><strong>onblur</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">setAssistantType</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'none'</span><span style="color:#ffffff">)</span><span style="color:#ffa0a0">"</span> <span style="color:#bdb76b"><strong>placeholder</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"请输入地址"</span><span style="color:#f0e68c"><strong>></input><br/></strong></span>
    	<span style="color:#f0e68c"><strong></body></strong></span>
    <span style="color:#f0e68c"><strong></html></strong></span>
    				</code></span></span>

    uni-app使用plus注意事项

    showSoftKeybord

    显示软键盘

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">showSoftKeybord</span><span style="color:#ffffff">();</span>
    				</code></span></span>

    说明:

    强制显示系统软键盘,如果软键盘已经显示则不做任何操作。

    参数:

    返回值:

    void : 无

    平台支持:

    • Android - ALL (支持)
    • iOS - ALL (不支持) :

      需获取DOM中的input元素并调用其focus方法获取焦点才能主动弹出系统软键盘。

    示例:

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#cccccc"><!DOCTYPE html></span>
    <span style="color:#f0e68c"><strong><html></strong></span>
    	<span style="color:#f0e68c"><strong><head></strong></span>
    	<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
    	<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Key Example</span><span style="color:#f0e68c"><strong></title></strong></span>
    	<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
    <span style="color:#87ceeb">// H5 plus事件处理</span>
    <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">(){</span>
    <span style="color:#ffffff">}</span>
    <span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">window</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
    	plusReady</span><span style="color:#ffffff">();</span>
    <span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong>else</strong></span><span style="color:#ffffff">{</span><span style="color:#ffffff">
    	document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'plusready'</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
    <span style="color:#ffffff">}</span>
    	<span style="color:#f0e68c"><strong></script></strong></span>
    	<span style="color:#f0e68c"><strong></head></strong></span>
    	<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
    		编辑框:</span><span style="color:#f0e68c"><strong><input</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text"</span> <span style="color:#bdb76b"><strong>placeholder</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"请输入"</span><span style="color:#f0e68c"><strong>></input><br/></strong></span>
    		<span style="color:#f0e68c"><strong><button</strong></span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">showSoftKeybord</span><span style="color:#ffffff">()</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">显示软键盘</span><span style="color:#f0e68c"><strong></button><br/></strong></span>
    	<span style="color:#f0e68c"><strong></body></strong></span>
    <span style="color:#f0e68c"><strong></html></strong></span>
    				</code></span></span>

    uni-app使用plus注意事项

    removeEventListener

    移除按键事件监听器

    <span style="background-color:#333333"><span style="color:#474747"><code><span style="color:#ffffff">
    plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">removeEventListener</span><span style="color:#ffffff">(</span> <span style="color:#f0e68c"><strong>event</strong></span><span style="color:#ffffff">,</span><span style="color:#ffffff"> listener </span><span style="color:#ffffff">);</span>
    				</code></span></span>

    说明:

    从窗口移除指定的事件监听器。若没有查找到对应的事件监听器,则无任何作用。

    参数:

    • event: KeyType ) 必选 要移除的事件类型

    • listener: KeyEventCallback ) 必选 要移除回调函数对象

    返回值:

    void : 无

    示例:

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#cccccc"><!DOCTYPE html></span>
    <span style="color:#f0e68c"><strong><html></strong></span>
    	<span style="color:#f0e68c"><strong><head></strong></span>
    	<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
    	<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Key Example</span><span style="color:#f0e68c"><strong></title></strong></span>
    	<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
    <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onback</span><span style="color:#ffffff">(){</span><span style="color:#ffffff">
    	alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"BackButton Key pressed!"</span> <span style="color:#ffffff">);</span>
    <span style="color:#ffffff">}</span>
    <span style="color:#87ceeb">// 监听“返回”按钮事件</span>
    <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> addEventTest</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
    	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"backbutton"</span><span style="color:#ffffff">,</span><span style="color:#ffffff">onback</span><span style="color:#ffffff">);</span>
    <span style="color:#ffffff">}</span>
    <span style="color:#87ceeb">// 取消监听“返回”按钮事件</span>
    <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> removeEventTest</span><span style="color:#ffffff">(){</span><span style="color:#ffffff">
    	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">removeEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"backbutton"</span><span style="color:#ffffff">,</span><span style="color:#ffffff">onback</span><span style="color:#ffffff">);</span>
    <span style="color:#ffffff">}</span>
    	<span style="color:#f0e68c"><strong></script></strong></span>
    	<span style="color:#f0e68c"><strong></head></strong></span>
    	<span style="color:#f0e68c"><strong><body></strong></span>
    		<span style="color:#f0e68c"><strong><button</strong></span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">addEventTest</span><span style="color:#ffffff">()</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">监听“返回”按键</span><span style="color:#f0e68c"><strong></button></strong></span>
    		<span style="color:#f0e68c"><strong><button</strong></span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">removeEventTest</span><span style="color:#ffffff">()</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">取消监听“返回”按键</span><span style="color:#f0e68c"><strong></button></strong></span>
    	<span style="color:#f0e68c"><strong></body></strong></span>
    <span style="color:#f0e68c"><strong></html></strong></span>
    				</code></span></span>

    uni-app使用plus注意事项

    KeyType

    按键类型

    常量:

    • "backbutton": (String 类型 )设备“返回”按钮按键事件

      如果需要改变默认“返回”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"backbutton"事件。

      平台支持

      • Android - 2.2+ (支持) :

        默认处理逻辑为退出应用。

      • iOS - ALL (支持) :

        标题栏的“返回”按钮点击时触发此事件。 默认不处理此事件。

    • "keydown": (String 类型 )键按下事件

      如果需要改变默认键按下的处理逻辑,则可通过plus.key.addEventListener来注册监听"keydown"事件。 可通过回调函数中KeyEvent对象的keyCode来获取按下的键值。

      平台支持

      • Android - 2.2+ (支持) :

        根据系统keydown事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。

      • iOS - ALL (不支持) :

        不触发此事件。

    • "keyup": (String 类型 )键松开事件

      如果需要改变默认键松开的处理逻辑,则可通过plus.key.addEventListener来注册监听"keyup"事件。 可通过回调函数中KeyEvent对象的keyCode来获取松开的键值。

      平台支持

      • Android - 2.2+ (支持) :

        根据系统keyup事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。

      • iOS - ALL (不支持) :

        不触发此事件。

    • "longpressed": (String 类型 )长按键事件

      如果需要改变默认长按键的处理逻辑,则可通过plus.key.addEventListener来注册监听"longpressed"事件。 长按键时会多次触发回调函数,通过回调函数中KeyEvent对象的keyCode来获取长按的键值。

      平台支持

      • Android - 2.2+ (支持) :

        根据系统keyup事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。

      • iOS - ALL (不支持) :

        不触发此事件。

    • "menubutton": (String 类型 )设备“菜单”按钮按键事件

      如果需要改变默认“菜单”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"menubutton"事件。

      平台支持

      • Android - 2.2+ (支持) :

        默认处理逻辑无操作。

      • iOS - ALL (不支持) :

        不触发此事件。

    • "searchbutton": (String 类型 )设备“搜索”按钮按键事件

      如果需要改变默认“搜索”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"searchbutton"事件。

      平台支持

      • Android - 2.2+ (支持) :

        默认处理逻辑为打开系统搜索应用。

      • iOS - ALL (不支持) :

        不触发此事件。

    • "volumeupbutton": (String 类型 )设备“音量+”按钮按键事件

      如果需要改变默认“音量+”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"volumeupbutton"事件。

      平台支持

      • Android - 2.2+ (支持) :

        默认处理逻辑为增加系统音量。

      • iOS - ALL (不支持) :

        不触发此事件。

    • "volumedownbutton": (String 类型 )设备“音量-”按钮按键事件

      如果需要改变默认“音量-”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"volumedownbutton"事件。

      平台支持

      • Android - 2.2+ (支持) :

        默认处理逻辑为减少系统音量。

      • iOS - ALL (不支持) :

        不触发此事件。

    KeyEvent

    按键事件

    属性:

    • keyCode: (Number 类型 )触发按键事件的键值

      键值由各系统平台定义,一些特殊按键在不同的设备上可能存在差异。

      <span style="background-color:#333333"><code>
      <span style="color:#cccccc"><!DOCTYPE html></span>
      <span style="color:#f0e68c"><strong><html></strong></span>
      	<span style="color:#f0e68c"><strong><head></strong></span>
      	<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
      	<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Key Example</span><span style="color:#f0e68c"><strong></title></strong></span>
      	<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
      <span style="color:#87ceeb">// H5 plus事件处理</span>
      <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">(){</span>
      	<span style="color:#87ceeb">// 监听键按下事件</span><span style="color:#ffffff">
      	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"keydown"</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
      		console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"keydown: "</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">keyCode</span><span style="color:#ffffff">);</span>
      	<span style="color:#ffffff">},</span><span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
      	<span style="color:#87ceeb">// 监听键松开事件</span><span style="color:#ffffff">
      	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"keyup"</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
      		console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"keyup: "</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">keyCode</span><span style="color:#ffffff">);</span>
      	<span style="color:#ffffff">},</span><span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
      	<span style="color:#87ceeb">// 监听长按键事件</span><span style="color:#ffffff">
      	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">key</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"longpressed"</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
      		console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"longpressed: "</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">keyCode</span><span style="color:#ffffff">);</span>
      	<span style="color:#ffffff">},</span><span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
      <span style="color:#ffffff">}</span>
      <span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">window</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
      	plusReady</span><span style="color:#ffffff">();</span>
      <span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong>else</strong></span><span style="color:#ffffff">{</span><span style="color:#ffffff">
      	document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff">plusReady</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
      <span style="color:#ffffff">}</span>
      	<span style="color:#f0e68c"><strong></script></strong></span>
      	<span style="color:#f0e68c"><strong></head></strong></span>
      	<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
      		监听键事件</span><span style="color:#f0e68c"><strong><br/></strong></span>
      	<span style="color:#f0e68c"><strong></body></strong></span>
      <span style="color:#f0e68c"><strong></html></strong></span>
      						</code></span>
    • keyType: (KeyType 类型 )按键事件类型

      用于表明触发此按键事件的类型,值为KeyType中定义的值。

    KeyEventCallback

    按键事件的回调函数

    <span style="background-color:#333333"><span style="color:#474747"><code>
    <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> onKeyEvent</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">KeyEvent</span> <span style="color:#f0e68c"><strong>event</strong></span> <span style="color:#ffffff">){</span>
    	<span style="color:#87ceeb">// Event handled code.</span>
    	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> key</span><span style="color:#ffffff">=</span><span style="color:#f0e68c"><strong>event</strong></span><span style="color:#ffffff">.</span><span style="color:#ffffff">keyCode</span><span style="color:#ffffff">;</span> <span style="color:#87ceeb">// 用户按键的键值</span>
    <span style="color:#ffffff">}</span>
    				</code></span></span>

    参数:

    • event: KeyEvent ) 必选 监听用户按键操作返回的数据

      可通过event的keyCode属性(String类型)获取用户按键的类型,参考KeyType类型。

    返回值:

    void : 无

    展开全文
  • 1.点击 快速点击 click(self) 调用对象需是UiObject eg. driver.find_element_by_xx.click() 单指或多指点击,长按 tap(self,[(x0,y0),…],duration=None) 最多可模拟五个手指同时点击,duration单位ms 2.滑动 swipe...
  • 如果采用手动点击按钮,效率不高,在领导提示下使用按键精灵实现自动操作。 一. 安卓手机按键精灵APP录制(免root版) 适用于安卓7及以下系统的手机 1. 手机从应用市场下载并安装按键精灵app; 2. 电脑安装...
  • 4、支持自动点击、多点折线滑动手机屏幕 5、支持自动找图、找色 6、手机设备信息获取、震动控制、文字输入 7、脚本语法基于按键精灵MQ语言,上手简单 8、按键精灵官方出品,正版应用,稳定可靠 按键精灵手机...
  • 4、支持自动点击、多点折线滑动手机屏幕 5、支持自动找图、找色 6、手机设备信息获取、震动控制、文字输入 7、脚本语法基于按键精灵MQ语言,上手简单 8、按键精灵官方出品,正版应用,稳定可靠  按键精灵手机...
  • 我们知道,手机连接电脑,在电脑上输入adb命令是可以实现安装应用、卸载应用、monkey等事件的,甚至可以指定点击屏幕某点、或者操作某按键的行为。在android应用里,也可以执行adb命令,因此,这些操作是可以不借助...
  • 这时会自动在左边弹出控制面板打开按钮,点击即可(有的XP系统点击开始后会在右边出现一个侧栏里面直接显示出了控制面板的按钮)。 3, 电脑的控制面板在哪里 打开控制面板有以下几个办法1. 按win+R键打开运行,运行...
  • python+appium 实现抖音自动点击滑动

    千次阅读 2021-06-15 09:39:35
    option["noReset"] = "true" # 连接设备 4723是Appium的端口号 driver = webdriver.Remote("http://localhost:4723/wd/hub", option) 3,自动点击进入用户列表界面 #得到窗口大小 def get_size(): x=driver.get_...
  • 由于目前市面上能找到的模拟触摸库都只支持到iOS11,而主流的iOS版本已经到了13,于是自己写了一个模拟触摸、模拟点击的库,支持iOS11 - 13.6 Github链接:https://github.com/xuan32546/IOS13-SimulateTouch 简介 ...
  • 按键精灵安卓版怎么用

    千次阅读 2021-06-06 08:01:29
    日前,按键精灵推出了手机版,现在您可以在安卓机上使用按键精灵了,它与叉叉助手、烧饼修改器的部分功能类似,可以解放您的双手,实现自动点击、录制脚本等。有的朋友不知道如何使用按键精灵安卓版怎么用,本文就给...
  • Android黑科技 自动点击

    千次阅读 2020-03-26 15:28:44
    Android 模拟点击功能
  • 基于MonkeyRunner的自动点击

    千次阅读 2018-01-07 19:09:37
    背景:某些场景下,如果我们想频繁的设备点击屏幕,也许很多人会想到的是adb命令,但是频繁的发送adb命令执行效率是很缓慢的,也许你还会想到android中的自动化monkey,那个点击是很快而且还能控制发送的全部是指定...
  • iOS 自动化测试 AirTest+wdaproxy(或按键精灵?!) iOS自动化测试的方案有很多,但是很多都要依赖mac电脑。毕竟apple最了解apple 配置airtest环境 前提条件:安装Xcode,拥有Apple Id(用于临时调试,生成临时的...
  • 本帖最后由 深澜大叔 于 2017-1-5 01:07 编辑继2016年5月发帖后2017年1月5日第一次重新编辑,修改个别有歧义的部分前言薄膜键盘、机械键盘到底谁更适合游戏?谁更牛逼?...对于游戏操作来讲,按键即是...
  • 我用 python 写了一些脚本,有一些是...点击电脑左下角的windows图标,或者键盘的windows按键。 在弹出的界面中,鼠标移到“此电脑”上右键点击,选择“更多”-‘管理’,点击则可进入“计算机管理”界面。 步骤2:
  • 按键精灵手机版_关于截屏一些方法

    千次阅读 2021-01-10 15:10:44
    相当于按下截屏按钮 zm.KeyPressScreenShot 按下截图键 速度还可以 但是有截图悬浮提示 按下截图键自动保存, 注意, 部分设备的截图文件夹位置可能不一致, 需要手动设置 方法四, 使用 MiniCap 替换系统的 截屏命, ...
  • 按键精灵脚本

    千次阅读 2018-04-29 10:43:07
    一、环境搭建1、夜神模拟器V_3.1.0.0版本+按键精灵手机助手,两者电脑版安装;2、模拟器可百度,按键精灵手机助手电脑版,下载地址:http://m.anjian.com/3、分别打开模拟器和手机助手,选择手机助手右上角的"...
  • 1、手机用数据线连接电脑 2、利用ADB工具配置好路径,然后电脑和手机安装好360手机管家或者其他的可以连接手机的...打印出来以下信息(第二行是手机设备,请检查你的adb路径是否配置错了) -------------...
  • 首先要去网上下载一个想要实现自动化的软件,下载对应的apk后拖拉到虚拟器的页面即可实现自动下载。 以上是对于AS打开的模拟器进行的下载安装,由于我找不到关于x86的企业微信,所以我就换了逍遥模拟器,对于AS...
  • [620]使用Python实现一个按键精灵

    千次阅读 2020-12-29 00:07:30
    按键精灵想必很多人都玩过,使用录制功能将鼠标和键盘的操作录制下来,录制好后就可以通过回放自动执行之前录制的操作,可以设置重复执行的次数,这样就可以将一些重复的劳动交给脚本自动化去完成。使用Python编写一...
  • windows自动化操作——程序员必备

    千次阅读 2021-04-02 00:33:27
    windows下自动化脚本,提高生产力必备。 不定期更新 目录 1.bat脚本 1.1.映射网络驱动器 1.2.开机自启动​​​​​​​ 1.3.自动添加环境变量脚本 1.bat脚本 1.1.映射网络驱动器 参考:...
  • Python开发游戏自动化后台脚本

    千次阅读 热门讨论 2021-10-13 19:54:43
    Python开发游戏自动化后台脚本前言说明获取窗口句柄获得后台窗口截图数字识别识别并点击图片位置后台文字输入完整代码参考 前言 前段时间沉迷猪场一梦江湖,由于实在太肝便萌生出用脚本做日常的想法,写了第一个test...
  • 鼠标选中文件会自动删除,问题出现多次,特此记录
  • Appium 自动化测试 手机操作

    千次阅读 2022-02-18 23:09:53
    我们在自动化测试过程中,可能需要手机相关联的一些操作进行辅助测试,这些我们主要讲解获取手机分辨率、手机截图、获取和设置手机网络、发送手机按键设备、操作手机通知栏。 获取手机分辨率 自动化测试可能会需要...
  • 原文由 自然生长 发表于TesterHome社区,点击 原文链接 可与作者直接交流。 一、前言 远程使用 WeTest 和 Testin 的 ios 设备时,总会觉得操作不流畅,因为它在松开鼠标时, 手机才会动。应该是由于 WDA 中是使用 ...
  • 一、前言移动端自动化的话,有时需要模拟手机按键操作,比如手机系统自带的回车、返回等,所以要模拟按键操作得用到 keyevent方法,参数如下:keyevent(keycode, metastate=None)keycode:发送给设备的关键代码,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,806
精华内容 7,922
关键字:

自动按键点击设备

友情链接: 3.10寸液晶屏教程.zip