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 相关文章推荐
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
Oct 29 Javascript
js判断url是否有效的两种方法
Mar 04 Javascript
深入理解JS中的变量及作用域、undefined与null
Mar 04 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
Jun 24 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
Sep 20 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
Sep 28 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
Sep 30 Javascript
微信小程序之事件交互操作实例分析
Dec 03 Javascript
node和vue实现商城用户地址模块
Dec 05 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
Dec 22 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
Jul 21 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 cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
python+django加载静态网页模板解析
2017/12/12 Python
python实现单向链表详解
2018/02/08 Python
实习心得体会
2014/01/02 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
阿里云日志过滤器配置日志服务
2022/04/09 Servers