[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

怎样用VBS模拟:按"Ctrl +Num 1”?谢谢
我是小白,希望老师多多帮助

Num 1 的虚拟键码是97
WshShell.SendKeys 方法会把小于127的编码视为ASCII码
所以vbs无法发送

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

评分人数


QQ 20147578

TOP

不知这样行不行
wsh.sendkeys "^1"
1

评分人数

TOP

本帖最后由 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

评分人数

TOP

返回列表