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 实现的自定义对话框
Mar 24 Javascript
jquery ajax abort()的使用方法
Oct 28 Javascript
cookie.js 加载顺序问题怎么才有效
Jul 31 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
May 14 Javascript
在JavaScript中操作数组之map()方法的使用
Jun 09 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
Jun 12 Javascript
js的函数的按值传递参数(实例讲解)
Nov 16 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 06 Javascript
ant design vue的form表单取值方法
Jun 01 Vue.js
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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
python实现跨文件全局变量的方法
2014/07/07 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
通信工程专业毕业生推荐信
2013/12/25 职场文书
污水厂厂长岗位职责
2014/01/04 职场文书
秋游活动策划方案
2014/02/16 职场文书
分公司任命书
2014/06/06 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL