标题: [问题求助] vbs如何模拟键盘按下 右边数字键盘的5 求大神指导 [打印本页]
作者: wyhs4000 时间: 2023-10-7 19:24 标题: vbs如何模拟键盘按下 右边数字键盘的5 求大神指导
查了很久 也没找到解决办法 求大神指点
作者: jyswjjgdwtdtj 时间: 2023-10-7 20:15
你找找
https://learn.microsoft.com/zh-c ... v/virtual-key-codes[/url]
作者: wyhs4000 时间: 2023-10-7 20:25
回复 2# jyswjjgdwtdtj
Dim Ws
set Ws = CreateObject("wscript.Shell")
Ws.SendKeys "123456"
Ws.SendKeys "{enter}"
Ws.SendKeys "321654"
我只会这样输入 虚拟键代码 不知道如何使用
作者: Nsqs 时间: 2023-10-7 21:12
http://bbs.bathome.net/thread-67140-1-1.html
你看看同样的问题
作者: wyhs4000 时间: 2023-10-7 23:33
你看看同样的问题
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脚本保存在同一文件夹内进行测试
作者: Five66 时间: 2023-10-8 02:36
最后吗调用那
KeyBoard 97,17
换成
KeyBoard 101,0
不过vbs不区分小键盘吧,直接wscript.shell的SendKeys "5"应该也可以吧(也许大概)
作者: wyhs4000 时间: 2023-10-8 07:26
30r vx红包求助 模拟鼠标左键点击 和小键盘输入5 实现单个的话 15
上班去了 晚上回来 能实现必红包。知识就是金钱,本人刚工作 实在是囊中羞涩 无力给予更多经济补偿 请谅解
作者: wyhs4000 时间: 2023-10-8 07:31
回复 6# Five66
wscript.shell我不会运用 纯小白
作者: Batcher 时间: 2023-10-8 09:19
回复 5# wyhs4000
SendKeys.ps1- 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
复制代码
Run.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 101,0
复制代码
作者: buyiyang 时间: 2023-10-8 16:49
本帖最后由 buyiyang 于 2023-10-8 16:51 编辑
回复 7# wyhs4000
保存为bat脚本- #@&cls&powershell "type '%~f0'|out-string|iex"&exit
- Add-Type @"
- using System;
- using System.Runtime.InteropServices;
- public class ClickKey
- {
- [DllImport("user32.dll")]
- private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
- public static void Click(){keybd_event(0x01, 0x45, 0x65, 0);}
- public static void KeyPress(byte key){keybd_event(key, 0x45, 0x65, 0);}
- public static void KeyUp(byte key){keybd_event(key, 0x45, 0x02, 0);}
- public static void MouseUp(){keybd_event(0x01, 0x45, 0x02, 0);}
- }
- "@
-
- #以下按照需要调整顺序或删除
-
- # 按下左键
- [ClickKey]::Click()
-
- # 按下数字键盘的5键
- $key = 0x65
- [ClickKey]::KeyPress($key)
-
- # 释放左键
- [ClickKey]::MouseUp()
-
- # 释放数字键盘的5键
- [ClickKey]::KeyUp($key)
复制代码
作者: wyhs4000 时间: 2023-10-8 20:23
回复 9# Batcher
加班才下班 首先感谢贵论坛管理员的热心回复,这段脚本是我复制别人的Ctrl +Num 1 您回复的脚本, 我复制了, 还是不能使用, 估计是我不会弄的原因,还是万分感谢了
原贴http://bbs.bathome.net/thread-67140-1-1.html 我想着 别人能组合键使用小键盘 按说单个按下小键盘应该也能实现 不过我不懂ps1 只会一点vbs 皮毛
作者: wyhs4000 时间: 2023-10-8 20:26
回复 10# buyiyang
您好 万分感谢 我想要的是vbs 模拟小键盘 或者左键点击 批处理不适用 谢谢啦
作者: wyhs4000 时间: 2023-10-8 20:28
回复 6# Five66
谢谢
作者: wyhs4000 时间: 2023-10-8 20:29
回复 4# Nsqs
谢谢 :hug: :hug: 别人这个是组合键 可惜我不会该
作者: wyhs4000 时间: 2023-10-8 20:30
回复 2# jyswjjgdwtdtj
谢谢
作者: Batcher 时间: 2023-10-8 21:49
回复 11# wyhs4000
你不需要懂PowerShell也不需要懂VBS,只需要知道怎么执行它们就行了。试试这样:
9楼第1段代码保存为 C:\SendKeys.ps1
9楼第2段代码保存为 C:\Run.vbs
双击文件 C:\Windows\System32\cmd.exe
在打开的CMD窗口中输入命令:
cd /d "C:\"
回车
输入命令:
cscript //nologo Run.vbs
回车
观察CMD窗口里面是否自动出现了数字5
如果有报错,或者不是你希望的效果。请给几个截图说明一下你的具体需求。
如果需要上传文件,可以用阿里云盘或百度网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: buyiyang 时间: 2023-10-8 22:01
回复 10# buyiyang
这也不算是bat,都用的是powershell(C#),不明白为什么一定要vbs,我参考http://demon.tw/programming/vbs-control-mouse.html写了一个vbs(vba)- Option Explicit
- Dim WshShell
- Dim oExcel, oBook, oModule
- Dim strRegKey, strCode, x, y
- Set oExcel = CreateObject("Excel.Application")
- set WshShell = CreateObject("wscript.Shell")
- strRegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\$\Excel\Security\AccessVBOM"
- strRegKey = Replace(strRegKey, "$", oExcel.Version)
- WshShell.RegWrite strRegKey, 1, "REG_DWORD"
- Set oBook = oExcel.Workbooks.Add
- Set oModule = obook.VBProject.VBComponents.Add(1)
- strCode = _
- "Private Declare PtrSafe Sub keybd_event Lib ""user32"" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)" & vbCrLf & _
- "Private Sub KeyClick()" & vbCrLf & _
- "keybd_event &H65, 0, 0, 0" & vbCrLf & _
- "keybd_event &H65, 0, 2, 0" & vbCrLf & _
- "keybd_event 1, &H45, &H65, 0" & vbCrLf & _
- "keybd_event 1, &H45, 2, 0" & vbCrLf & _
- "End Sub"
- oModule.CodeModule.AddFromString strCode
- oExcel.Run "KeyClick"
- oExcel.DisplayAlerts = False
- oBook.Close
- oExcel.Quit
复制代码
15、16行按下、释放Numpad5键,17、18行按下、释放左键。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |