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 相关文章推荐
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 Javascript
Javascript中Event属性搜集整理
Sep 17 Javascript
JavaScript实现的多个图片广告交替显示效果代码
Sep 04 Javascript
jQuery Validate初步体验(二)
Dec 12 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
深入理解javascript函数参数与闭包
Dec 12 Javascript
解决Vue编译时写在style中的路径问题
Sep 21 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 Javascript
JS数组中对象去重操作示例
Jun 04 Javascript
简单谈谈javascript高级特性
Sep 04 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
GD输出汉字的函数的分析
2006/10/09 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
php实现留言板功能
2017/03/05 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
Numpy的简单用法小结
2019/08/28 Python
python 实现多维数组转向量
2019/11/30 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
十一个高级MySql面试题
2014/10/06 面试题
结构工程个人自荐信范文
2013/11/30 职场文书
入党思想汇报
2014/01/05 职场文书
社团文化节邀请函
2014/01/10 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
如何写股份合作协议书
2014/09/11 职场文书
连锁超市项目计划书
2014/09/15 职场文书
小学生安全保证书
2015/05/09 职场文书
出生证明格式
2015/06/15 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript