JavaScript与VB.NET模拟键盘输入及系统调用原理
本文解析利用JavaScript的ActiveXObject和VB.NET的SendKeys类实现Windows键盘消息模拟的方法。通过WScript.Shell发送组合键控制界面,或使用SendKeys模拟按键触发事件。同时介绍VB.NET中Shell函数调用外部程序及隐藏DOS窗口的技巧,并探讨通过发送WM_SETTEXT消息实现非键盘字符(如汉字)输入的原理。
JavaScript ActiveXObject模拟按键与系统调用
代码如下:
//windows 98
<script language=javascript>
//var wsh = new ActiveXObject("WScript.Shell");
//wsh.Run("rundll32.exe user.exe,exitWindows");
</script>
//win2000 or xp
<script language=javascript>
var wsh = new ActiveXObject("WScript.Shell");
wsh.sendKeys("^{ESC}"); //相当于按 Ctrl + ESC 键
wsh.sendKeys("U~"); //按 U 键回车
wsh.sendKeys("S~"); //按 S 键回车
</script> VB.NET SendKeys模拟键盘输入详解
sendKeys(args[])方法详解(VB):
vb.net中使用sendkeys遥控:
在VB6中,SendKeys通过发送键盘事件间接控制外部程序,具备遥控功能。
在VB7中该功能一度不可用,后在MSDN中发现System.Windows.Forms命名空间下的SendKeys类,恢复使用且功能稳定。
主要是在system.winforms族中找到sendkeys 使用方法同vb6
键:一般的字符键如下输入”a” “b” “c”………………”z”等,如果要连续按下两个以上就使用”ab”的形式如果同时按下ab就使用括号如”(ab)”
如果是功能键,就放到大括号中如“{f4}” 另:用+代表shift,用^代表ctrl,用%代表alt
如“+a”表示按下shift同时按a
下面是一个例子:
dim sdstr as system.winforms.sendkeys
sdstr.send("%{f4}") 发送alt+f4
下面这个代码在按下button2以后转移焦点到下一个控件,使按钮能按下又不能按受焦点.
代码如下:
protected sub button2_click(byval sender as object, byval e
as system.eventargs)
dim sdstr as system.winforms.sendkeys
sdstr.send("{tab}")
end sub 下面使用sendwait,使用的方法同上,不过执行这个过程会等待到发送的键执行完成以后,再继续执行后面的代码.
代码如下:
protected sub button2_click(byval sender as object, byval e
as system.eventargs)
dim sdstr as system.winforms.sendkeys
'sdstr.send("{tab}")
sdstr.sendwait("{tab}")
end sub VB.NET Shell调用外部程序与窗口控制
vb.net中使用shell调用外部程序:
代码如下:
shell(pathname as string,[style as
microsoft.visualbasic.appwinstyle=2],[wait as
boolean=false],[timeout as integer=-1]) as integer 调用资源管理器
代码如下:
dim pid as integer
pid = shell("explorer.exe http://vbnetcn.126.com",
microsoft.visualbasic.appwinstyle.normalfocus, true) 调用默认程序
代码如下:
dim pid as integer
pid = shell("start.exe mailto:vbnetcn@163.com",
microsoft.visualbasic.appwinstyle.hide, true) 使用microsoft.visualbasic.appwinstyle.hide参数是为了隐藏程序
运行时跳出的dos窗口。
Windows消息机制与WM_SETTEXT应用
sendkeys是个模拟键盘消息的函数,我们暂且不谈windows消息驱动来单纯的考虑sendkey这个函数
sendkeys既然模拟的是键盘消息,那么他就只能模拟键盘上能输入的消息,比如说
sendkeys("abcd")
其实并不是这个脚本把"abcd"这个字串发出去
而是模拟键盘的输入,相当于键盘先点击了a再点击了b在点击了c。。。。。
加入发送的按键消息被qq的聊天框受到了,那么我们都知道他的处理方法是把英文字母显示到聊天框中
但是我们发现,加入用sendkey模拟输入汉字的话,似乎就不现实了,因为键盘上没有中文按键。。。。
但是我们有想输入我们汉字的聊天内容,那么我们可以怎么办呢?
从原理说起哈,sendkey其实就是个在windows中发送特定消息的一个函数(我猜他发送的是WM_SYSKEYDOWN的消息,我没有测试过哈^_^)
我们假如要发送汉字的聊天框的内容的话,我们也要从windows消息机制下手,先找到聊天消息的句柄(可以利用findwindow函数或者用spy工具哈),然后在找到上面的聊天框的句柄,接着我们就可以想这个句柄发送WM_SETTEXT的消息了。
粗略的
JS大数值转字符串出现科学计数法怎么办
2026-11-05 17:09:21
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09
