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系列(1) 编写高质量JavaScript代码的基本要点
Jan 15 Javascript
jQuery操作select下拉框的text值和value值的方法
May 31 Javascript
jQuery插件Validate实现自定义表单验证
Jan 18 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
快速将Vue项目升级到webpack3的方法步骤
Sep 14 Javascript
vue使用v-for实现hover点击效果
Sep 29 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
Oct 12 Javascript
layui-table表复选框勾选的所有行数据获取的例子
Sep 13 Javascript
微信小程序开发之转发分享功能
Oct 22 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
Nov 25 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
隐藏你的.php文件的实现方法
2007/03/19 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
python数据结构树和二叉树简介
2014/04/29 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
python中PIL安装简单教程
2016/04/21 Python
python获取list下标及其值的简单方法
2016/09/12 Python
TensorFlow损失函数专题详解
2018/04/26 Python
Python创建数字列表的示例
2019/11/28 Python
pyspark 随机森林的实现
2020/04/24 Python
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
门诊手术室工作制度
2014/01/30 职场文书
世界文化遗产导游词
2015/02/13 职场文书
辩论赛新闻稿
2015/07/17 职场文书
诉讼和解协议书
2016/03/23 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL