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 相关文章推荐
js定时器怎么写?就是在特定时间执行某段程序
Oct 11 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
Js数组排序函数sort()介绍
Jun 08 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
AngularJs基于角色的前端访问控制的实现
Nov 07 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
js实现按座位号抽奖
Apr 05 Javascript
vue.js element-ui tree树形控件改iview的方法
Mar 29 Javascript
深入浅析Vue 中 ref 的使用
Apr 29 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 Javascript
JavaScript缓动动画函数的封装方法
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
PHP学习 运算符与运算符优先级
2008/06/15 PHP
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
自写的一个jQuery圆角插件
2010/10/26 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
Python Pandas 转换unix时间戳方式
2019/12/07 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
Exception类的常用方法
2012/06/16 面试题
大学生职业生涯规划书模版
2013/12/30 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
职务任命书范本
2014/06/05 职场文书
幼儿老师求职信
2014/06/30 职场文书
高中历史教学反思
2016/02/19 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang