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 相关文章推荐
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
Jan 13 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
Dec 02 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 Javascript
JSONP基础知识详解
Mar 19 Javascript
vue脚手架中配置Sass的方法
Jan 04 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
Feb 18 jQuery
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
微信小程序实现消息框弹出动画
Apr 18 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
详解a++和++a的区别
2017/08/30 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
Python常用列表数据结构小结
2014/08/06 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
python实现经纬度采样的示例代码
2020/12/10 Python
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
我的祖国演讲稿
2014/05/04 职场文书
远程培训的心得体会
2014/09/01 职场文书
关键在于落实心得体会
2014/09/03 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
教育教学读书笔记
2015/07/02 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
导游词之南京中山陵
2019/11/27 职场文书
Nginx HTTP跳转至HTTPS
2022/05/15 Servers