找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35989|回复: 16

[问题求助] vbs如何模拟键盘按下 右边数字键盘的5 求大神指导

[复制链接]
发表于 2023-10-7 19:24:58 | 显示全部楼层 |阅读模式
查了很久 也没找到解决办法  求大神指点
发表于 2023-10-7 20:15:08 | 显示全部楼层
 楼主| 发表于 2023-10-7 20:25:43 | 显示全部楼层
回复 2# jyswjjgdwtdtj


    Dim Ws

set Ws = CreateObject("wscript.Shell")

Ws.SendKeys "123456"

Ws.SendKeys "{enter}"

Ws.SendKeys "321654"
我只会这样输入  虚拟键代码 不知道如何使用
发表于 2023-10-7 21:12:20 | 显示全部楼层
 楼主| 发表于 2023-10-7 23:33:47 | 显示全部楼层
你看看同样的问题
Nsqs 发表于 2023-10-7 21:12



    非常感谢 你的热心回复

我不会修改参数     有哪位好心人帮我修改一下  vbs按下小键盘5


param([byte]$Key,[byte]$Shift)
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Keyboard {
    [DllImport("user32.dll")]
    private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
    Keyboard(){}
    public static void Sendkeys(byte key, byte shift = 0){
        if(shift == 0){
            keybd_event(key, 0, 0, 0);
            keybd_event(key, 0, 2, 0);
        }else{
            keybd_event(shift, 0, 0, 0);
            keybd_event(key, 0, 0, 0);
            keybd_event(key, 0, 2, 0);
            keybd_event(shift, 0, 2, 0);
        }
    }
}
"@;
[Keyboard]::Sendkeys($Key,$Shift) # Ctrl=17;97=Num1COPY
保存为PowerShell代码

然后vbs代码
function KeyBoard(byval vkey,byval shift)
set ws=createobject("Wscript.Shell")
ws.run "powershell -noprofile -executionpolicy bypass -file "&chr(34)& "SendKeys.ps1"&chr(34)&chr(32)&vKey&chr(32)&Shift,0
end function
'使用方法<键值,组合键值>
KeyBoard 97,17        'Ctrl=17COPY
与PowerShell脚本保存在同一文件夹内进行测试
发表于 2023-10-8 02:36:42 | 显示全部楼层
最后吗调用那
KeyBoard 97,17
换成
KeyBoard 101,0

不过vbs不区分小键盘吧,直接wscript.shell的SendKeys "5"应该也可以吧(也许大概)
 楼主| 发表于 2023-10-8 07:26:55 | 显示全部楼层
30r vx红包求助 模拟鼠标左键点击  和小键盘输入5       实现单个的话 15                                             
上班去了  晚上回来  能实现必红包。知识就是金钱,本人刚工作 实在是囊中羞涩  无力给予更多经济补偿 请谅解
 楼主| 发表于 2023-10-8 07:31:52 | 显示全部楼层
回复 6# Five66


    wscript.shell我不会运用  纯小白
发表于 2023-10-8 09:19:58 | 显示全部楼层
回复 5# wyhs4000


SendKeys.ps1
  1. param([byte]$Key,[byte]$Shift)
  2. Add-Type @"
  3. using System;
  4. using System.Runtime.InteropServices;
  5. public class Keyboard {
  6.     [DllImport("user32.dll")]
  7.     private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
  8.     Keyboard(){}
  9.     public static void Sendkeys(byte key, byte shift = 0){
  10.         if(shift == 0){
  11.             keybd_event(key, 0, 0, 0);
  12.             keybd_event(key, 0, 2, 0);
  13.         }else{
  14.             keybd_event(shift, 0, 0, 0);
  15.             keybd_event(key, 0, 0, 0);
  16.             keybd_event(key, 0, 2, 0);
  17.             keybd_event(shift, 0, 2, 0);
  18.         }
  19.     }
  20. }
  21. "@;
  22. [Keyboard]::Sendkeys($Key,$Shift) # Ctrl=17;97=Num1
复制代码
Run.vbs
  1. function KeyBoard(byval vkey,byval shift)
  2. set ws=createobject("Wscript.Shell")
  3. ws.run "powershell -noprofile -executionpolicy bypass -file "&chr(34)& "SendKeys.ps1"&chr(34)&chr(32)&vKey&chr(32)&Shift,0
  4. end function
  5. '使用方法<键值,组合键值>
  6. KeyBoard 101,0
复制代码
发表于 2023-10-8 16:49:42 | 显示全部楼层
本帖最后由 buyiyang 于 2023-10-8 16:51 编辑

回复 7# wyhs4000
保存为bat脚本
  1. #@&cls&powershell "type '%~f0'|out-string|iex"&exit
  2. Add-Type @"
  3. using System;
  4. using System.Runtime.InteropServices;
  5. public class ClickKey
  6. {
  7.     [DllImport("user32.dll")]
  8.     private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
  9.     public static void Click(){keybd_event(0x01, 0x45, 0x65, 0);}
  10.     public static void KeyPress(byte key){keybd_event(key, 0x45, 0x65, 0);}
  11.     public static void KeyUp(byte key){keybd_event(key, 0x45, 0x02, 0);}
  12.     public static void MouseUp(){keybd_event(0x01, 0x45, 0x02, 0);}
  13. }
  14. "@

  15. #以下按照需要调整顺序或删除

  16. # 按下左键
  17. [ClickKey]::Click()

  18. # 按下数字键盘的5键
  19. $key = 0x65
  20. [ClickKey]::KeyPress($key)

  21. # 释放左键
  22. [ClickKey]::MouseUp()

  23. # 释放数字键盘的5键
  24. [ClickKey]::KeyUp($key)
复制代码
 楼主| 发表于 2023-10-8 20:23:29 | 显示全部楼层
回复 9# Batcher


   加班才下班 首先感谢贵论坛管理员的热心回复,这段脚本是我复制别人的Ctrl +Num 1 您回复的脚本, 我复制了, 还是不能使用,  估计是我不会弄的原因,还是万分感谢了
  原贴http://bbs.bathome.net/thread-67140-1-1.html  我想着 别人能组合键使用小键盘  按说单个按下小键盘应该也能实现  不过我不懂ps1 只会一点vbs 皮毛
 楼主| 发表于 2023-10-8 20:26:18 | 显示全部楼层
回复 10# buyiyang


    您好 万分感谢 我想要的是vbs 模拟小键盘 或者左键点击  批处理不适用  谢谢啦
 楼主| 发表于 2023-10-8 20:28:50 | 显示全部楼层
回复 6# Five66


    谢谢
 楼主| 发表于 2023-10-8 20:29:35 | 显示全部楼层
回复 4# Nsqs


    谢谢 :hug: :hug:  别人这个是组合键    可惜我不会该
 楼主| 发表于 2023-10-8 20:30:12 | 显示全部楼层
回复 2# jyswjjgdwtdtj


    谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:14 , Processed in 0.024139 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表