标题: [问题求助] 怎样用VBS模拟:按"Ctrl +Num 1”?谢谢 [打印本页]
作者: yyz219 时间: 2023-8-25 11:43 标题: 怎样用VBS模拟:按"Ctrl +Num 1”?谢谢
怎样用VBS模拟:按"Ctrl +Num 1”?谢谢
作者: czjt1234 时间: 2023-8-25 22:14
Num 1 的虚拟键码是97
WshShell.SendKeys 方法会把小于127的编码视为ASCII码
所以vbs无法发送
去powershell板块问下,用API直接发送虚拟键码应该可以
作者: Five66 时间: 2023-8-25 22:43
不知这样行不行
wsh.sendkeys "^1"
作者: Nsqs 时间: 2023-8-26 05:03
本帖最后由 Nsqs 于 2023-8-26 05:06 编辑
- 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=Num1
复制代码
保存为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=17
复制代码
与PowerShell脚本保存在同一文件夹内进行测试
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |