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

[问题求助] 怎样用VBS模拟:按"Ctrl +Num 1”?谢谢

[复制链接]
发表于 2023-8-25 11:43:32 | 显示全部楼层 |阅读模式
怎样用VBS模拟:按"Ctrl +Num 1”?谢谢
发表于 2023-8-25 22:14:19 | 显示全部楼层
Num 1 的虚拟键码是97
WshShell.SendKeys 方法会把小于127的编码视为ASCII码
所以vbs无法发送

去powershell板块问下,用API直接发送虚拟键码应该可以

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

发表于 2023-8-25 22:43:00 | 显示全部楼层
不知这样行不行
wsh.sendkeys "^1"

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

发表于 2023-8-26 05:03:51 | 显示全部楼层
本帖最后由 Nsqs 于 2023-8-26 05:06 编辑
  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
复制代码
保存为PowerShell代码

然后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 97,17        'Ctrl=17
复制代码
与PowerShell脚本保存在同一文件夹内进行测试

评分

参与人数 2技术 +2 收起 理由
czjt1234 + 1 感谢分享
yyz219 + 1 乐于助人

查看全部评分

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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