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 相关文章推荐
JavaScript 学习历程和心得分享
Dec 12 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
使用JavaScript动态设置样式实现代码及演示动画
Jan 25 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
Feb 13 Javascript
DOM基础教程之事件类型
Jan 20 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
Nov 13 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
Dec 05 Javascript
浅析Vue中拆分视图层代码的5点建议
Aug 15 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 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
PHP生成静态页面详解
2006/11/19 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP编写简单的App接口
2016/08/28 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python下singleton模式的实现方法
2014/07/16 Python
Python的subprocess模块总结
2014/11/07 Python
浅谈Python中的数据类型
2015/05/05 Python
Python numpy 点数组去重的实例
2018/04/18 Python
Django rest framework实现分页的示例
2018/05/24 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
《最可爱的人》教学反思
2014/02/14 职场文书
社区工作者感言
2014/03/02 职场文书
《搭石》教学反思
2014/04/07 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
高中班主任培训心得体会
2016/01/07 职场文书