javascript利用控件对windows的操作实现原理与应用


Posted in Javascript onDecember 23, 2012
//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>

sendKeys(args[])方法详解(VB):
vb.net中使用sendkeys遥控:
大家在vb6中都用过sendkeys,幕通过发送键盘的事件间接地控制外部程序,是有遥控之说。
我在vb7中却发现这个不能用了, 也就不了了之,后来一次在查阅msdn的时候竟看到了这个,是以尝试了一下,竟然旧貌新颜,还是一样好用。

主要是在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调用外部程序:
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窗口。

sendkeys是个模拟键盘消息的函数,我们暂且不谈windows消息驱动来单纯的考虑sendkey这个函数
sendkeys既然模拟的是键盘消息,那么他就只能模拟键盘上能输入的消息,比如说
sendkeys("abcd")
其实并不是这个脚本把"abcd"这个字串发出去
而是模拟键盘的输入,相当于键盘先点击了a再点击了b在点击了c。。。。。
加入发送的按键消息被qq的聊天框受到了,那么我们都知道他的处理方法是把英文字母显示到聊天框中
但是我们发现,加入用sendkey模拟输入汉字的话,似乎就不现实了,因为键盘上没有中文按键。。。。
但是我们有想输入我们汉字的聊天内容,那么我们可以怎么办呢?

从原理说起哈,sendkey其实就是个在windows中发送特定消息的一个函数(我猜他发送的是WM_SYSKEYDOWN的消息,我没有测试过哈^_^)

我们假如要发送汉字的聊天框的内容的话,我们也要从windows消息机制下手,先找到聊天消息的句柄(可以利用findwindow函数或者用spy工具哈),然后在找到上面的聊天框的句柄,接着我们就可以想这个句柄发送WM_SETTEXT的消息了。
粗略的

Javascript 相关文章推荐
Prototype 学习 工具函数学习($w,$F方法)
Jul 12 Javascript
Js表格万条数据瞬间加载实现代码
Feb 20 Javascript
JavaScript闭包详解
Feb 02 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
Aug 18 Javascript
七夕情人节丘比特射箭小游戏
Aug 20 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
Apr 21 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
微信小程序 textarea 层级过高问题简单解决方案
Oct 14 Javascript
javascript小数四舍五入多种方法实现
Dec 23 #Javascript
javascript+xml实现简单图片轮换(只支持IE)
Dec 23 #Javascript
JavaScript与DOM组合动态创建表格实例
Dec 23 #Javascript
JavaScript执行效率与性能提升方案
Dec 21 #Javascript
JS实现图片预加载无需等待
Dec 21 #Javascript
Javascript根据指定下标或对象删除数组元素
Dec 21 #Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
Dec 21 #Javascript
You might like
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
golang与PHP输出excel示例
2016/07/22 PHP
PHP培训要多少钱
2017/06/06 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
python pymysql库的常用操作
2020/10/16 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
化工专业应届生求职信
2013/11/08 职场文书
金属材料工程个人求职的自我评价
2013/12/04 职场文书
园林施工员岗位职责
2013/12/11 职场文书
护理职业生涯规划书
2014/01/24 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
神秘岛读书笔记
2015/07/01 职场文书
工作建议书范文
2019/07/08 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技