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 判断浏览器类型及版本
Feb 21 Javascript
ajax提交表单实现网页无刷新注册示例
May 08 Javascript
JavaScript将数组转换成CSV格式的方法
Mar 19 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
折叠菜单及选择器的运用
Feb 03 Javascript
validationEngine 表单验证插件使用实例代码
Jun 15 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
利用Three.js如何实现阴影效果实例代码
Sep 26 Javascript
Mac中安装nvm的教程分享
Dec 11 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
Mar 06 Javascript
Vue学习之组件用法实例详解
Jan 06 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 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+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
javascript连续赋值问题
2015/07/08 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
Anaconda入门使用总结
2018/04/05 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
文明市民先进事迹
2014/05/15 职场文书
师范类求职信
2014/06/21 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
商业计划书之服装
2019/09/09 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技