如何改变plus的iphone6 plus桌面图标上的工具

今日论坛第 1 个签到,每日签到可得财富值+2,连续5天签到后再连续签到则每日可得财富值
+4,记得每天都来签到哦~
上一主题:
下一主题:
查看: 1715 | 回复: 1
盘古越狱工具是怎么样通过修改而达到越狱的
财富值 57255
好评度 270
交易信用 0
人气值 1325
分区总版主
积分/帖子:11071
连续签到天数:300
全部签到天数:860
注册时间:
手机型号:
Lumia 1020
来自:岭南
状态:在线
盘古越狱工具是怎么样通过修改而达到越狱的
本文来自威锋――elcswu
盘古在用户空间主要利用了iOS安装程序的一个漏洞,这里先列出安装一个应用的主要过程:
整个安装过程分为12个阶段,上图只是列出了起点、终点还是对盘古越狱来说比较重要的阶段。大家注意上图红线所示的时间区间,在这个区间内如果在“Staging Directory”中创建一个符号链接指向沙盒之外,就可以利用解压程序向系统目录写入文件。同时也可以通过控制压缩包中的文件列表,在起始处放一个大文件,从而在解压过程中创建一个符号链接。这是在盘古在安装过程中利用的主要漏洞,后面介绍的盘古在用户空间的行为基本都是围绕这个漏洞。
主要的组件
盘古主要由四部分组成,:
1、桌面程序:提供资源,控制越狱流程。
2、com.pangu.ipa1.ipa:Socket Server,与桌面程序配合制造竞态条件。
3、pangu.dylib,Socket Server,利用内核漏洞安装Untecher,Cydia等。
4、pangu.tar,Untecher
这里主要涉及的是前两个组件,及第三个组件中用户空间相关的部分。
说明:为了验证自己的分析是正确的,用Python重新实现了盘古桌面程序的功能,利用盘古的Payload可以实现越狱,下面会在主要阶段给出相应示例代码。
阶段一:安装辅助程序,获取相关资源
1、安装com.pangu.ipa1.ipa
def install_pangu():& & lockdown = LockdownClient()& & afc = AFCClient(lockdown)& & mci = lockdown.startService(&com.apple***le.installation_proxy&)& & file_name = &com.pangu.ipa1.ipa&& & afc.set_file_contents(&/PublicStaging/& + file_name, open(&payload/& + file_name,&rb&).read())& & mci.sendPlist({&Command&:&Install&, &PackagePath&: &/PublicStaging/& + file_name})& & while True:& && &&&status =&&mci.recvPlist()& && &&&if not status:& && && && &break& && &&&completion = status.get(&PercentComplete&)& && &&&if completion:& && && && &print &Installing, %s: %s %% Complete& % (&com.pangu.ipa1.ipa&, status[&PercentComplete&])& && &&&if status.get(&Status&) == &Complete&:& && && && &print &Installation %s\n& % status[&Status&]& && && && &break& & mci.close()& & afc.stop_session()& & lockdown.stop_session()
[color=rgb(51, 102, 153) !important]复制代码
首先利用AFC服务将IPA传到设备上,然后利用 Installation Proxy 安装应用。
2、获取Cache
def download_caches():& & fc = FileRelayClient()& & data = fc.request_sources([&Caches&])& & fc.stop_session()& & if data:& && &&&file_path = &./payload/caches.gz&& && &&&output_path = &./payload/caches&& && &&&open(file_path,&wb&).write(data)& && &&&print&&&Data saved to:&&%s & % file_path& && &&&with open(file_path, &r&) as f:& && && && &gz = gzip.GzipFile(mode=&rb&, fileobj=f)& && && && &cpio = CpioArchive(fileobj=BytesIO(gz.read()))& && && && &cpio.extract_files(files=None,outpath=output_path)& & else:& && &&&print &Fail to get caches&& && &&&raise Exception(&Fail to get caches&)
[color=rgb(51, 102, 153) !important]复制代码
调用 FileRelay 服务,获取Cache,主要是从中拿到com.apple***le.installation.plist
3、修改 com.apple***le.installation.plist
修改是针对盘古程序的,具体修改如下:
CFBundleExecutable = &../../../../../../usr/libexec/lockdownd&;EnvironmentVariables = { DYLD_INSERT_LIBRARIES = &/private/var/mobile/Media/Pangu-Install/pangu.dylib&; };
[color=rgb(51, 102, 153) !important]复制代码
4、修改盘古程序的Info.plist
CFBundleExecutable = &../../../../../../usr/libexec/lockdownd&;
[color=rgb(51, 102, 153) !important]复制代码
5、构造applicationState.plist
{ &com.pangu.ipa1& = { SBApplicationAutoLaunchForVoIP = : }; }
[color=rgb(51, 102, 153) !important]复制代码
这个会造成盘古程序在设备重启后自动运行。
6、com.apple.LaunchServices-056.csstore 主要是为了更新程序列表
7、com.apple.backboardd.plist 禁用“看门狗”
基于上述文件盘古会构造三个Payload。
def generate_upgrade_bundle1():& & guid_str = get_guid()& & with ZipFile(&./payload/upgrade1.zip&, &w&) as payload:& && &&&payload.write(&./payload/upgrade_bundle/bigfile&, &/tmp/bigfile&)& && &&&payload.write(&./payload/upgrade_bundle/com.apple.LaunchServices-056.csstore&, &/mobile/Library/Caches/com.apple.LaunchServices-056.csstore&)& && &&&payload.write(&./payload/upgrade_bundle/com.apple***le.installation.plist&, &/mobile/Library/Caches/com.apple***le.installation.plist&)& && &&&payload.write(&./payload/upgrade_bundle/applicationState.plist&, &/mobile/Library/BackBoard/applicationState.plist&)& && &&&payload.write(&./payload/upgrade_bundle/com.apple.backboardd.plist&, &/mobile/Library/Preferences/com.apple.backboardd.plist&)& && &&&payload.write(&./payload/upgrade_bundle/Info.plist&, &/mobile/Applications/& + guid_str + &/ipa1.app/Info.plist&)def generate_upgrade_bundle2():& & # os.remove(&./payload/upgrade2.zip&)& & guid_str = get_guid()& & with ZipFile(&./payload/upgrade2.zip&, &w&) as payload:& && &&&payload.write(&./payload/upgrade_bundle/bigfile&, &/tmp/bigfile&)& && &&&payload.write(&./payload/upgrade_bundle/com.apple***le.installation.plist&, &/mobile/Library/Caches/com.apple***le.installation.plist&)def generate_upgrade_bundle3():& & # os.remove(&./payload/upgrade3.zip&)& & guid_str = get_guid()& & with ZipFile(&./payload/upgrade3.zip&, &w&) as payload:& && &&&payload.write(&./payload/upgrade_bundle/bigfile&, &/tmp/bigfile&)payload.write(&./payload/upgrade_bundle/com.apple.LaunchServices-056.csstore&, &/mobile/Library/Caches/com.apple.LaunchServices-056.csstore&)
[color=rgb(51, 102, 153) !important]复制代码
这个阶段会知道三个程序升级包,供下一阶段使用。
另外,可以简单的理解为:执行完这个阶段就对应着盘古提示用户在手机上启动程序。
阶段二:利用竞态条件安装文件,构造环境执行pangu.dylib
当用户在手机上启动程序后,手机上的App会启动一个Socket Server,等待桌面程序的握手,这个握手的暗语挺有意思。桌面向App发送:PING,App收到后回应桌面:PONG。在握手完成后,盘古开始利用静态条件将如上构造的三个Payload安装到手机上。
具体过程为首先利用安装服务安装升级包,在安装的过程中桌面向App发送starthook,具体hook的内容可以通过调试App确定是创建一个符号链接:
&/private/var/tmp/install_staging.eP7ZzJ/foo_extracted& ---& &/var/&
[color=rgb(51, 102, 153) !important]复制代码
其中后缀部分会因为每次安装而不同。
示例代码:
def fire_race_condition(lockdown, file_name):& & mci = lockdown.startService(&com.apple***le.installation_proxy&)& & sock = get_sock()& & print &-----&;PING&& & sock.send(&PING&)& & msg = sock.recv(4)& & if msg == &PONG&:& && &&&print &&-----PONG\n&& & upgrade_pangu(mci, file_name)& & print &-----&starthook&& & sock.send(&starthook&)& & msg = sock.recv(4)& & if msg == &succ&:& && &&&print &&-----success\n&& & else:& && &&&print &&-----fail\n&
[color=rgb(51, 102, 153) !important]复制代码
在完成安装三个Payload之后,盘古会上传文件到Media中的 Pangu-Install目录:
& & Cydia.tar
& & packagelist.tar
& & pangu.dylib
& & pangu.tar
& & pangu_ex.tar
至此,盘古基本完成了用户空间的行为,在界面上的反应为:盘古会第一次重启设备。
阶段三:利用漏洞安装Untecher,Cydia
设备重启完成后,pangu.dylib会被加载,并启动一个 Socket Server。桌面程序在检测到设备加载后会向 pangu.dylib 发送:55AA,pangu.dylib 接到 55AA后开始安装Untecher、Cydia。
阶段四:清理
在pangu.dylib完成工作后,向桌面程序发送:AA55,桌面程序开始清理临时文件,删除Provisional文件,恢复设备时间等操作。在完成清理操作后,桌面程序会第二次重启设备,至此越狱完成。
[ 本帖最后由 山风拂月明 于
15:21 编辑 ]
(35.96 KB) 20:36
请一定要有自信,你就是一道风景。
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
财富值 57255
好评度 270
交易信用 0
人气值 1325
分区总版主
积分/帖子:11071
连续签到天数:300
全部签到天数:860
注册时间:
手机型号:
Lumia 1020
来自:岭南
状态:在线
转自威锋:elcswu
请一定要有自信,你就是一道风景。
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
微信扫一扫关注dospyiPhone6 plus SIM卡怎么安装?iPhone6 plus SIM卡安装步骤-手机硬件-手机开发-壹聚教程网iPhone6 plus SIM卡怎么安装?iPhone6 plus SIM卡安装步骤iPhone6 plus SIM卡怎么安装呢?新买的手机要把SIM卡插入进去我们很多果粉是不知道操作了,下面小编对于不太熟悉的朋友来介绍iPhone6 plus手机SIM卡安装教程,希望大家看了之后都会知道。
&iphone6 sim卡类型
关于iPhone6 SIM卡类型,上面已经提到了SIM卡主要有标准大卡(SIM)、微型小卡(micro SIM)以及迷你卡(Nano SIM),而iPhone6采用的是Nano SIM,其手机SIM卡属于迷你卡类型。
值得一提的是,Nano SIM机身尺寸最小,当您已经有标准SIM大卡或者micro SIM微型小卡的话,无法直接安装在iPhone6上,需要进行剪卡,您可以前往营业厅更换迷你卡或者自行剪卡
iPhone6 plus 怎么打开卡槽?
一、iPhone6手机卡槽位于机身正面右侧中部,打开iPhone6卡槽,需要使用包装盒中自带的卡针工具,具体方法是,将卡针垂直插入到SIM卡槽下方的小孔中,如下图所示。
二、垂直插入卡针,然后稍微用力一顶,就可以弹出SIM卡槽了,如下图所示。
三、接下来我们就可以松松的取出iPhone6 SIM卡槽了,注意取出后,要注意正反面,待等下安装SIM后,再安装回去。
iPhone6 plus 手机卡安装教程
一、取出iPhone6手机卡槽后,我们再将准备好的Nano SIM手机卡放入到卡槽中,注意放置的时候,要注意手机卡和卡槽的圆角必须对应,这样才可以安装平整,如下图所示。
二、将SIM卡安装到iPhone6卡槽后,我们就可以将安装有SIM卡的卡槽再次插入到iPhone6卡槽中即可,如下图所示。
好了iPhone6 plus& SIM卡的安装完成了,最后一步是开机去激活你的iPhone6 plus吧,当然也可以把以前备份在icloud数据导入到iPhone6 plus 哦,包括短信,联系人之类的。
连接电脑iPhone6 plus激活教程
如果身边没有Wifi无线网络,也可以将iPhone6连接电脑(电脑需联网),然后在电脑中操作,以完成iPhone6激活。
第一步:首先需要在电脑中下载苹果设备管理工具iTunes,建议下载安安装最新版iTunes。之后通过USB数据线,将;
第二步:在iPhone6关机状态下,长按iPhone6开关机的电源键,开机大约20秒后,初次使用iPhone6即可进入如下激活提示界面。
第三步:接下来打开电脑中的itunes工具,如果出现&iPhone运营商设计的更新现已启用,是否立即安装更新?&提示界面的时候,请点击&更新设置&,如下图:
第四步:iPhone更新设置之后,会进入如下图所示的界面,我们再选择&设置为新iPhone&,然后再点击下面的&继续&进入下一步操作:
第五步:接下来就为进入设置新iPhone界面了,一般我们只需要在名称栏目中,填写上您为自己iPhone起的名字,然后点击底部的&完成&即可修改完毕,如下图所示:
如果不出什么意外的话,一般会出现如下界面,至此说明您的iPhone6手机已经成功激活了。
iPhone6激活成功
iPhone6激活完成后,我们就可以断开与电脑连接,然后就可以开机进入iPhone6桌面界面了。
上一页: &&&&&下一页:相关内容
淡入淡出网开云办公编辑推荐
电脑壁纸相关专题搜索 新闻 资讯 游戏
您现在的位置:&&>>&&>>&&>>&&>>&正文
iphone6/6&plus铃声怎么设置
编辑:xiaojun && 来源:iPhone中文网 && 发布时间: 15:34:01
  无论外观还是设计,iPhone 6/6 Plus的出现都成为iPhone有史以来一起巨大的改变,唯一不变的是ios系统的流畅性。对于新入手iPhone6/6plus的大部分机友想必是不太清楚如何设置手机铃声,跟随小编一起来看看方法吧!
  【iPhone6/6 plus如何用itunes设置铃声】
  方法一:
  1、我们可以从酷音铃声里找到大量已经剪辑好的铃声资源,进行iPhone6铃声下载。
  2、同步导入手机。
  3、菜单栏-编辑-偏好设置-勾选铃声-确定
  4、数据线连接电脑和您的IPHONE,选择我的iphone-应用程序-往下拖动页面-选择应用程序-酷音铃。
  5、直接将酷音铃声的文档中的M4R铃音文件选中拖拽到桌面上。
  6、将桌面上的M4R文件拖拽到itunes资料库中。
  7、选择我的iphoneC顶部菜单-选择铃声。
  8、选择同步铃声。
  9、右键选择我的iphoneC同步,则开始同步资料库中的铃音到iPhone中。
  10、拿起手机-设置-声音-设置你刚刚制作的铃音为自己的来电铃声吧。
扫描左侧二维码,可以订阅iPhone中文网官方微信。每天除了推送最新的苹果产品资讯,我们还将不定期举行有奖活动,广大网友可以积极参与,幸运随时会降临!当然,你也可微信搜索“iPhone中文网”或“apple4cn”,关注iPhone中文网官方微信,第一时间获取更多苹果资讯。
iOS越狱破解
苹果产品信息查询
热门新闻排行
皖公网安备05 皖网文许字[3号
TGBUS Corporation, All Rights Reserved1 / 129 页
查看: 239171|回复: 1283
StrokesPlus教程(日更新)
吹自田野的风
本帖最后由 吹自田野的风 于
07:17 编辑
目前S+已经完美支持win8了,包括支持Metro应用下可以划出手势轨迹(原来的版本轨迹不可见),支持win8下的alt+tab切换等等功能,而伴随着这一改进,目前S+的发布方式也发生了变化,不再提供增量更新包,2个安装包(一个win8,一个win8以下系统,因为win8下需要特殊签名才可以使用),一个绿色版
添加对汉化包失效的说明以及上传个人配置文件
前言:& &&&
相信很多朋友都跟我一样,最初接触到鼠标手势都是从浏览器这小小的窗户开始的,简单的一画就能轻松的实现关闭、刷新等等功能,那时候觉得鼠标手势真神奇。不过,浏览器自带的鼠标手势,总有各种各样的缺点,比如说自定义性不强,流畅度不够,使用有限制等等。而最好的办法就是通过系统的全局鼠标手势软件来解决,当然这并不是说全局就一定比自带的好,浏览器的手势也有一些功能是全局无法完成的。Strokeit应该就是其中的佼佼者了,目测国内手势使用者中占有率很高,不过这个软件从号更新后在也没有更新了。那么StrokesPlus相对于Strokeit来说,不仅仅功能更加强大(支持脚本动作,能实现更多功能),作者更新非常勤快(对win8完美支持,strokeit在win8下有许多小问题)。我也是从Strokeit转到StrokesPlus,熟悉了StrokesPlus之后,Strokeit就可以彻底忽略掉了。
& & 鉴于目前StrokesPlus就没有什么好一点的教程给新手入门,我准备耐心点写个教程出来,希望又更多人加入到StrokesPlus阵营来吧。
基本信息:
官方网站:
下载地址:
汉化包:(使用方法:将汉化包中的文件解压到StrokesPlus的根目录下即可)
个人自用配置文件:
(24.9 KB, 下载次数: 7554)
00:02 上传
点击文件名下载附件
关于StrokesPlus版本,我简单介绍一下,官方提供了32位和64位的两种版本,支持主流的Windows操作系统,从XP到win8。官方发布的发布的版本有3种(32位和64位相同):
绿色版(包含签名版和未签名版)
安装版(不签名版,推荐win8以下系统选用)
安装版(签名版,推荐win8系统选用)
现在来讲讲签名和不签名版本的区别,为了完美支持win8,软件的作者Rob作了很大的努力,目前签名版已经可以实现Metro应用下画出鼠标手势轨迹,原来虽然手势可用,但是轨迹不可见,还有类型alt+tab等等快捷键原来win8下无法实现的现在都已经没有问题了。但是签名版也有缺点,只能运行在受系统保护的路径下才行,推荐系统盘下的Program Files下面,而置于这个目录下面,必须以管理员权限运行,如果不以管理员权限运行的话,必须将配置文件转移到其他路径下,运行方式如C:\Program Files\StrokesPlus\StrokesPlus.exe D:\backup\StrokesPlus.xml
如果你经常使用Metro应用,并且需要使用到如alt+tab这样的特殊快捷键,我推荐你使用签名版,否则,不签名版更加方便!
将以上地址的StrokesPlus解压到指定的目录(最好是非系统目录,这样重装系统后直接运行就可以了)
StrokesPlus文件夹解析:
Licenses.txt 这个没什么好说的了,软件的许可文件。
StrokesPlus.exe 主程序,运行这个就可以了。
StrokesPlus.dll dll文件
StrokesPlus.lua 全局执行的脚本文件
StrokesPlus.xml 所有新建的鼠标手势以及相应各个程序的手势设置全部在这里
StrokesPlus_PAD.xml 包含了此版本的一些基本信息
ActionHelp.xml 脚本的帮助文件
StrokesPlus.html 帮助文件
images文件夹 StrokesPlus.html这个网页所需的图片
如果你使用了汉化包那么还会有Language.xml这个语言文件了。
Tips1:如果要备份StrokesPlus的设置的话,只要备份StrokesPlus.xml(必须的)和StrokesPlus.lua(如果定义了全局脚本)即可。
Tips2:如何设置开机启动?软件默认没有开机启动的选项,要开机启动的话,只需要把StrokesPlus.exe的主程序的快捷方式放到C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs中即可,也就是开始菜单中的启动文件夹中。
本教程将基于英文环境(x86 win7中文旗舰版)编写(有点英文基础的还是不要用汉化包了,都是些很简单的英文单词,官方更新速度比较,有时候汉化包更不上,不过用旧版本的汉化包大部分都是没有问题的)
首次运行,将会弹出
QQ截图12.png (30.97 KB, 下载次数: 88)
13:44 上传
提示窗口。
我来说明下这个意思,就是StrokesPlus默认不是以管理员身份运行,在对待以管理员身份运行的一些程序的时候手势会无效,要在这些程序中也想让S+正常工作的话,那么就要让S+以管理员身份运行。普通权限开机启动:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp(即开始菜单中的启动文件夹,WIN8下没有开始菜单,直接用这个路径即可)下创建S+快捷方式。
管理员权限开机启动:
打开计划任务,创建任务,具体配置如图:
QQ截图28.png (38.73 KB, 下载次数: 94)
16:13 上传
一定要勾上使用最高权限运行!
QQ截图55.png (25.13 KB, 下载次数: 71)
16:13 上传
QQ截图04.png (26.04 KB, 下载次数: 83)
16:13 上传
QQ截图19.png (41.87 KB, 下载次数: 74)
16:13 上传
QQ截图28.png (41.28 KB, 下载次数: 79)
16:13 上传
Win7或者以下的用户普通权限运行即可,如果是Win8的话强烈推荐用管理员权限启动,否则很多地方都将不能使用手势。
基本配置:& &&&
QQ截图44.png (67.93 KB, 下载次数: 81)
13:53 上传
主界面就是这样了。
基本的手势配置就全在Configure Actions这里了。默认内置了3个,Global Actions全局手势,Chrome(难道作者也是Chrome迷?)和Desktop(桌面)。
需要说明的是全局手势的优先级是最低的,将会优先采用应用程序里的手势设置。
添加app(应用程序):
1.png (2.51 KB, 下载次数: 92)
13:59 上传
2.png (13.47 KB, 下载次数: 86)
13:59 上传
点击左下角的add app,在弹出的对话框中输入Name(名称就可以了),例如IE。
添加完成后就可以再列表里看见IE了
3.png (2.4 KB, 下载次数: 86)
13:59 上传
这个只完成了最简单的一部,下面需要将添加的IE和系统中的IE浏览器关联起来。
4.png (65.07 KB, 下载次数: 74)
14:03 上传
在FileName中输入IE的进程名即可。
或者更简单一点,将
5.png (1.19 KB, 下载次数: 87)
14:03 上传
拖动到IE窗口中再放开
信息将会自动填充,将filename之外的其他项全部清空即可。这样,程序关联就完成了,下面要设置具体的手势了。
为什么要将其他信息清除掉呢?只设置filename的话只要进程名是iexplorer.exe就会执行相应的手势了,如果设置了其他的,如窗口标题等等,那么只有当进程是iexplorer.exe,窗口标题也符合的时候手势才能生效,显示这不是我们想要的,不过后面对于这个特性我们也能运用它去解决一些问题,参加应用1。
下面我们来设置IE下面的手势:
11.png (2.83 KB, 下载次数: 81)
14:14 上传
点击Add Action,增加手势
12.png (13.51 KB, 下载次数: 82)
14:14 上传
设置名称,如关闭标签
13.png (1.54 KB, 下载次数: 81)
14:14 上传
设置完成后,就是这样一种树形目录了。
下面为Close编写具体的代码和设置指定的手势了。
我们都知道浏览器中关闭一个标签的快捷键是ctrl+w。下面我们来看看具体的代码。
21.png (85.99 KB, 下载次数: 86)
14:17 上传
执行快捷键,我们需要用到StrokesPlus中的acSendKeys。
acSendKeys是S+中最常用的了,因为我们大部分的操作都是通过快捷键来完成的,具体用法非常简单:acSendKeys(&具体快捷键&)。
在S+中,是这样表示一些特殊按键的。
下面是对照表:
= Windows键
{PLUS} = +
{CARET} = ^
{PERCENT} = %
所以ctrl+w就可以表示成^w,整个写法就是acSendKeys(&^w&)了,ctrl+shift+alt+h就可以表示成(^+%h)了,其他写法类推。
这样语法部分就完成了,下面我们就要为它指定一个手势了。
15.png (28.73 KB, 下载次数: 80)
14:14 上传
在guesture下面选择一个我们中意的就可以了。注意的是,一旦在这里我们指定了某个已经被全局手势使用了的手势,那么全局手势将会失效,而同一个程序下面不可以设置两个一样的手势。
如果没有我们想要的手势怎么办,这个可以说是S+做得还不太好的地方,默认带的手势太少了,完全没有Strokeit丰富,自己画一个吧。点击New,
222.png (17.73 KB, 下载次数: 78)
14:26 上传
弹出提示框,点击确定,然后画一个自己想要的手势就可以了,画完了,
2222.png (21.45 KB, 下载次数: 71)
14:28 上传
保存即可。
至此,基本设置已经完毕了,按照这种方式,我们添加其他的程序和手势就可以了。
屏蔽我们不想要使用手势的程序:
在igored List中我们就可以设置了。使用方法与添加应用程序的方法一样,关联好就可以,这个程序中我们就不能再使用手势了(一些需要鼠标右键的游戏中,我们就需要屏蔽掉它们,不然会冲突)。
55.png (11.28 KB, 下载次数: 87)
15:16 上传
启用这项的话,运行指定的程序的时候,整个S+都会被禁用掉
搭配其他按键一起使用
除了用鼠标右键,我们还可以配合左键、滚轮以及其他一些按键来一起使用使用。(使用右键的情况下,可以在设置中更改默认的手势按键)
1.png (37.3 KB, 下载次数: 81)
15:39 上传
可以使用的按键类型。
推荐使用鼠标的左键和滚轮,不推荐使用键盘按键。使用方法,比如说勾选left button,那么使用的时候只用按住右键,按下左键,松开左键后迅速松开右键,如果按住太长时间的话,那么就会不起作用。自己多试几次,就知道了,滚轮也是一样,可以设置中键点击,也可以上下滚动,分别为其指定不同的手势。不推荐使用键盘按键的原因是,你一边按住鼠标右键,一遍又去点键盘,而且点击完键盘后还要很快的松快鼠标右键,蛋疼不?还有那个X1 button,我想一般的鼠标都是没有的。
进阶阶段:
完成并掌握了上面的基本内容之后,你已经S+常见的一些用法了。接下来这个阶段我们要了解更多,你也会发现S+强大之处了。
1.让手势来完成鼠标点击的日常操作并不是所有的程序都提供了丰富的快捷键可以给我们使用的。这个时候,最简单的acSendKeys就没法用了,那怎么办呢?下面来秀出大招吧——acMouseClick。
这是一个S+的内置函数,我们先来看看简单的使用方法吧。
acMouseClick(x,y,button,down,up)
其中的x和y就是鼠标点击事件发生的起始坐标。最常用的写法就是sp_gesture_start_x(可以简写成gsx)和sp_gesture_start_y和(gsy)。
而button的话,可以使用0,1,2,3,4这些值。我们来看看具体的区别
<font color="#:右键
<font color="#:中键
<font color="#:左键
<font color="#:X1键
<font color="#:X2键
down可以使用0和1(false and true),如果是1的话,那么S+就会发送一个MOUSE_BUTTON_DOWN ()给应用程序。
up的使用方法同down。
下面来举一个实际应用。在win7的任务管理器中
QQ截图58.png (35.5 KB, 下载次数: 82)
16:46 上传
我们可以通过右键菜单轻松的打开进程所在文件的位置。那么这一操作如何用手势来取代呢?
思路应该是这样的:模拟一个右键点击的事件,然后发送一个O键(这个打开文件位置的快捷键是O),那么这一步就可以顺利完成了。
请看具体代码:
acMouseClick(gsx,gsy,0,1,1)
acSendKeys(&{DELAY=50}o&)
代码测试应该是没有问题的。不过有没有发现一个问题,代码执行完毕后鼠标又回到了手势的起点处,这给人一种很奇怪的感觉。那怎么办呢?
下面介绍另外一个内置函数——acMouseMove(x,y) x和y同acMouseClick
那么这个时候坐标应该怎么写呢?
显然,我们是想要把最后的光标放在手势的终点处,那么我们就需要使用到sp_gesture_end_x(简写成gex)和sp_gesture_end_y(简写成gey)。
这两个变量即代表了手势终点的x和y坐标。
在上面脚本的基础上加上acMouseMove(gex,gey)即可。
是不是觉得正常多了?
如果我们在Windows中删除一个文件,那么用键盘来操作就是按下delete键之后再按enter键。
用一个脚本来表示就是
acSendKeys(&{DELETE}&)
acSendKeys(&{ENTER}&)
但是你在具体使用这个脚本的时候,会发现有时候回车并没有起作用。这就是因为没有延时的关系。
我们执行一些操作的时候,总是要暂停一下,让计算机有个反应时间,然后再执行后面的内容,这个就是延时了。
正式因为S+的这种脚本特性,所以在使用多个快捷键的组合的时候,延时就显得特别的重要。
在S+中,有多种延时的写法:
1.acDelay(t) t就是延时,单位是毫秒,t是一个正的整数。
acSendKeys(&{DELETE}&)
acDelay(50)
acSendKeys(&{ENTER}&)
这段脚本就正常多了,在按下删除键之后,会有个50ms的暂停,然后再发送回车键。
关于时间的问题,不应该短于50ms,有时候可能50ms也太快了,我们就需要自己适当延长这个时间了。
<font color="#.{DELAY X} 和{DELAY=X}
这是另外的两者写法。怎么用呢?
acSendKeys(&{DELETE}&)
acSendKeys(&{DELAY=50}{ENTER}&)
acSendKeys(&{DELETE}&)
acSendKeys(&{DELAY 50}{ENTER}&)
有什么区别呢?
虽然都起到了延时的作用。
举{DELAY=50}{ENTER}{DELETE}这个例子来说,如果是DELAY=X的话,那么{ENTER}和{DELETE}都将延时50ms(先延时50ms执行回车,然后再延时50ms执行删除,DELAY=X就是设定默认的延时,之后的全部按照这个延时来执行),如果是{DELAY 50}{ENTER}{DELETE}只有{ENTER}延时了50ms,{ENTER}将和{DELETE}一起执行。例外的情况是,{DELAY=50}{DELAY 100}{ENTER}{DELETE},回车键是延时100ms的,删除键延时50ms。
Ps:{DELAY=50}应该和acDelay(50)是相同的
3.按键Down&Up事件
S+提供了按键的Down和Up功能。
最常用的ctrl+w关闭网页标签,我们可以写成acSendKeys(&^w&),也可以写成
acSendControlDown() --按下ctrl键
acDelay(50) --延时50ms
acSendKeys(&w&) --按下w键
acDelay(50)
acSendControlUp() --松开ctrl键
那细看这样写不是更麻烦了吗?除去延时语句,至少也要3句才能完成这个操作?这样的意义何在呢?
在搜狗浏览器中acSendKeys(&^{F_4}&)一直不成功,换成了
acSendControlDown()
acSendKeys(&{DELAY=50}{F_4}&)
acSendControlUp()
就能正常执行了。
记住,Down之后一定要Up,否则键盘的状态将一直是这个键被按下的状态。
除了ctrl之外,还有
acSendAltDown()和acSendAltUp()& && &Alt键
acSendShiftDown和acSendShiftUp()& &Shift键
acSendWinDown()和acSendWinUp()& &Windows键
更多用法请看应用2
4.运行指定的程序
有2中方法,先介绍第一种:
acRunProgram(fullpath, parameters, seconds, style)
fullpath即完整路径,写法C:\\windows\\notepad.exe。
parameters即运行参数,如果不需要的话就不用写。
seconds 程序花费多少时间去等待运行的程序结束,如果过了这个时间程序还没有结束的话,返回0,默认我们填0即可。
style 程序运行风格,请参看
默认用1就可以了。
来个完整的实例吧,ping一下卡饭吧。
写法如下:acRunProgram(&C:\\Windows\\System32\\PING.exe&,&&,0,1)
第二种方法:
acShellExecute(verb, file, parameters, directory, style)
verb即执行具体的动作,可以是edit, explore, find, open, print之中的某个值,下面会仔细讲解。
file,即文件名
parameters 同第一种方法,是传递的参数
directory 即目录,这里要讲解下(还是ping卡饭),如果这边写了&C:\\Windows\\System32&的话,那么file那里只要写个&PING.exe&就可以了,这里也可以空着,但是file那里必须写成第一种那种形式。
style 同1 默认1即可
verb讲解(加入D盘下面有个test.doc和test.exe):
当verb使用edit的时候,file只能为可编辑类的文件,比如说txt、doc、ppt等,你如果写个exe或者dll上去,那么这个手势是无效的。
正确写法:acShellExecute(&edit&,&test.doc&,&&,&d:\\&,1)
explore:可以用来打开文件夹。比如说我们经常使用某个目录如迅雷下载目录,那么我们就可以通过acShellExecute(&explore&,&&,&&,&d:\\TdDownload&,1),file不能填。
find:可以在directory 指定的目录下搜索,file不能填。
open:全能型的,文件和目录都可以开。填了file打开文件,不填就打开路径。
print与edit相当,用来打印文件
讲解了这么多,打开一个程序的写法就非常简单了。acShellExecute(&open&,&C:\\Windows\\System32\\PING.exe&,&&,&&,1)
如果不写verb呢?
5.剪贴板操作
关于剪贴板的操作,StrokesPlus中提供了2个函数acGetClipboardText()和acSetClipboardText(value)
acGetClipboardText()就是从系统剪贴板中获得保存的值
而acSetClipboardText(value)就是将value保存到系统剪贴板
可能有人会好奇,这两个东西在手势中能起到什么作用呢?
来看个实例吧
日常中,QQ上或者Word中的文档里,我们看到了某个东西,想搜索下,那么我们需要进行的操作有复制,打开浏览器,用搜索引擎搜索。如果有一个手势,直接就能打开浏览器来完成搜索的话,那就方便了。
请看脚本代码:
acSendKeys(&^c&)&&--首先复制选定的字符
local SearchURL=&http://www.google.at/search?q=&..acGetClipboardText()&&
这句话是关键,我们通过一个变量来拼接搜索字段,内容就是从剪贴板里获取的。这里是Google,要使用其他搜索引擎请自己更换字段
acShellExecute(&&,SearchURL,&&,&&,&&)
--这句用来打开URL。
这样一个全局手势搜索就完成了!
6.窗体信息的获取S+提供了Find Window让我们可以轻松的获取一个窗体的一些信息,如Title、Class Name、FileName等等,下面就是IE10中新建标签页和打开卡饭的时候分别获取到的信息。
QQ截图42.jpg (102.38 KB, 下载次数: 98)
20:41 上传
QQ截图59.jpg (101.96 KB, 下载次数: 77)
20:41 上传
我们可以看到,Title和ClassName都发生了变化,我们正好可以利用这点来实现更多的个性化。建议阅读这个的时候先去阅读下应用1(解决QQ2013的手势配置)。关于这方面的函数,S+中提供了()、()、()、()这4个函数。这4个函数的用法都是一样的,只需要提供3个参数即可,如acGetClassName(hwndTarget,x, y)。hwndTarget用于获取窗体的句柄,而x和y就是窗体的坐标。默认情况下,我们更多是采用acGetClassName(nil,gsx,gsy)这样的写法去获取窗体的Class Name,其他几个函数的用法也是一样的。那么讲了这么多,这个东西又有什么用呢?下面举一个实例来说明:我们要在Win7的资源管理器中打开一个进程的位置的时候,如果首先打开的是应用程序选项卡的时候,就需要右键先转到进程,
QQ截图20.png (57.07 KB, 下载次数: 84)
20:36 上传
然后再指定的进程中右键打开文件位置,
QQ截图46.png (67.31 KB, 下载次数: 74)
20:36 上传
如果我们用2个action来完成的话(先转到进程,然后打开位置),那么就需要分别指定两个不同的手势来完成。首先来提一点,在进行鼠标模拟操作的时候,我尝试了很多的方案,我发现,最优的设计,应该是这样一个过程:& &&&acMouseMove(gex,gey)& &&&acMouseClick(gex,gey,0,1,1)& &&&acSendKeys(&{DELAY=50}g&)这是一个非常顺畅的过程,但是这样一个手势,对手势有一个要求,就是只能是right或者left方向的,因为菜单是纵向排布的关系,横向移动是不会改变菜单的选择。你可以对比看一下& &&&acMouseClick(gsx,gsy,0,1,1)& &&&acMouseMove(gex,gey)& &&&acSendKeys(&{DELAY=50}g&)这样的写法体验显然不如上面来的好。那么回到正题,如果想要让上面那两个操作公用一个手势(例如向右)该如何实现呢?我们先用find window分别查看下两个选项卡下的信息。
QQ截图06.png (85.93 KB, 下载次数: 79)
20:36 上传
QQ截图57.png (87.62 KB, 下载次数: 75)
20:36 上传
我们看到了controlid是不同的。思路来了,请看下面的脚本:local id=acGetControlID(nil,gsx,gsy)& &--首先我们需要获得操作窗体的control idif id==&1053& then& && && && && && && && && && &--如果是应用程序选项卡& &&&acMouseMove(gex,gey)& &&&acMouseClick(gex,gey,0,1,1)& &&&acSendKeys(&{DELAY=50}g&)else& && && && && && && && && && && && && && && && && &--如果是进程选项卡。& &&&acMouseMove(gex,gey)& &&&acMouseClick(gex,gey,0,1,1)& &&&acSendKeys(&{DELAY=50}o&)end这样就可以使用一个手势在一个程序中完成不同的操作了。思路就是这样了,具体的其他应用,大家自己去挖掘吧。7.另作他用的acDisplayText()S+中提供了acDisplayText()这样一个函数用来在窗体上显示指定的文本信息。我们首先来看一下使用参数message: 需要显示的消息& &
font: 使用的字体名
size: 字体大小red: RGB中红色的值green: RGB中绿色的值blue: RGB中蓝色的值duration: 显示间隔& & x: 显示位置的X坐标y: 显示位置的Y坐标& &&&虽然参数很多,但是谁也不是没事找事的在屏幕上来画个手势来显示点什么吧,如果你是这样的人,我想你也无聊到一定的境界了。当然了,我想到一种情况,画个爱心,显示点”XX,我爱你一生一世”,给你女朋友一个惊喜。为什么要介绍这个东西呢,一开始我也觉得这个东西没什么意义,后来才发现在深入使用的过程中还是能起到帮助的。我们要把这个东西拿来作为调试用,因为本身S+带有脚本功能,而编写脚本的过程中难免出错,只要在一些过程中我们现实一下过程中变量的值,就能帮助我们发现错误,找到错误了。例如在6.窗体信息的获取中,我们获取了control id,我们就可以用类似local id=acGetClassName(nil,gsx,gsy)acDisplayText(id, &微软雅黑&, 300,0, 0, 0, )来显示下,看看对不对了。
ps:另外,如果你想画一个手势的时候能够屏显提示信息的话,那么也可以用这个。acDisplayText(&关闭&, &Arial&, 32, 0, 0, 0, )把这句话加在脚本代码的第一行就可以了
8.脚本代码注释方法
修改代码的过程中不可避免的要使用代码注释功能,下面简单来提提这个。如果是单行注释的话,这样写就可以了。--acSendKeys(“a”)如果是多行注释的话,这样写就可以了。--[[acSendKeys(“a”)acSendKeys(“b”)acSendKeys(“c”)]]--
9.窗口置顶S+中提供了3个与窗口置顶的相关函数,分别是:
acSetTopmost(hwndTarget,x, y) 设置窗口在最前acClearTopmost(hwndTarget, x, y) 不设置窗口在最前acToggleTopmost(hwndTarget, x, y) 切换窗口是否在最前
推荐使用acToggleTopmost(nil,gsx, gsy)进行窗口状态切换即可。
10.InputBox
StrokePlus中提供了acInputBox来显示一个输入框获得我们输入的值。用法如下:acInputBox(title, message, default, delim)title&&输入框标题message 输入框显示的信息default 输入框中的默认值delim 分隔符,用来分隔default中的值,如果这里填写了值的话那么这个输入框将会变成下拉框的形式。
acInputBox(&姓名&,&请输入您的姓名&,&Jack &,&&)显示如下
QQ截图25.png (17.39 KB, 下载次数: 71)
14:13 上传
acInputBox(&姓名&,&请输入您的姓名&,&Jack&Tom&Lucy&Lily&,&&&)显示如下
QQ截图52.png (17.81 KB, 下载次数: 75)
14:14 上传
我们可以通过local i= acInputBox(&姓名&,&请输入您的姓名&,&Jack &,&&)来获取输入框中的值下面举一个应用范例:比如说我们有时候复制了一段话或者其他什么东西,需要重复黏贴N次。那么这时候就可以用到acInputBox来帮助我们快速完成任务了。代码如下:
local number=acInputBox(&Paste&, &Please Enter The Number&, &6&, &&)
acSendKeys(&{RIGHT}&)
for i=1,number do
& && &&&acSendKeys(&{DELAY=50}{ENTER}^v&)
end复制代码
问题和应用:
问题1:不知道各位使用StrokesPlus的朋友有没有遇到过这种情况,这边在用视频播放器(设置了播放时在最前)看视频那边在用浏览器浏览网页,然后往浏览器上画了一个漂漂亮亮的关闭标签的手势,结果网页那边没生效,但是在视频播放器上生效了,蛋疼吗?
原因:strokeit不会有这种问题,因为strokeit默认就会去激活手势所画在的程序,而S+的作者则是设计成了默认不激活,就导致了这个问题。
解决方法:
function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact)
& && &&&acActivateWindow(aGetAncestor(acGetWindowByPoint(gsx, gsy), GA_ROOT), 0, 0)
aliencore = alien.core
user32 = aliencore.load(&user32.dll&)
-- ************ GetAncestor ************
gGetAncestor = user32.GetAncestor
gGetAncestor:types{ ret = 'long', abi = 'stdcall', 'long', 'uint'}
GA_PARENT = 1
GA_ROOT = 2
GA_ROOTOWNER = 3
function aGetAncestor(iWnd, iFlags)
& && &&&return gGetAncestor(iWnd, iFlags)
将代码添加到Global Lua下面就可以解决这个问题
问题2:刚安装完S+后无法运行怎么办?
重启即可解决(安装版会有这个问题,绿色版暂时没有遇到)
问题3:在桌面画个C,桌面图标消失了,右键菜单也无法使用了?
相信很多用Strokeit的用户都是在桌面画个C,然后关机的。在S+中出现这个问题,主要是因为全局手势设置中画个C执行的是Close Program,而它的代码是acCloseApplication(nil, gsx,gsy),并不是我们常见的alt+F4。
临时解决方案:用任务管理器结束掉explorer.exe进程,然后重建即可。
完美解决方案:将相应的手势代码换成acSendKeys(&%{F_4}&)即可。
问题3:Windows8的Metro下是否可以使用:
手势轨迹无法显示,但是功能正常!
问题4:将关闭手势配置为alt+F4,不能关闭某个应用程序怎么办?
cmd就存在这个问题,这种情况只要为cmd单独建立一个APP配置,然后设置关闭手势,手势为:acCloseApplication(nil,gsx,gsy)即可。
问题5:如何快速禁用StrokesPlus
用键盘快捷键Ctrl+shift+Windows+Z
问题5:如何让同一文件夹下的EXE文件都公用一套手势方案?
新建一个APP,只在File Path Pattern中填入.*StrokesPlus.*即可,其他保持空。
那么这样StrokesPlus中的文件都可以使用这套方案了。
不过这样有一个问题,不同路径下的StrokesPlus的文件夹都会应用这套手势,比如说c:\StrokesPlus和d:\StrokesPlus。
如果只让d:\StrokesPlus使用这套方案呢?
\\Device\\HarddiskVolume3\\TweakCube3\\.*
File Path Pattern中这样写就可以了。其中HarddiskVolume3就是磁盘的卷标。
在每个人的系统中,卷标并不同,如何获得这个卷标呢?
运行cmd,执行diskpart,然后输入list volume,就可以看到各个分区的卷标。只要把HarddiskVolume3中的数字3你自己想要分区的标号就可以了。
问题6:为何语言文件不起作用?
这种情况只出现在安装版身上,自StrokesPlus的某个版本开始,安装版的配置文件一律保存在%appdata%\StrokesPlus路径下,当此路径下相应的文件不存在的时候,才回去安装目录下读取。反映语言文件没用的朋友,都是把语言文件直接放在了安装目录下,从程序逻辑上来说,这应该算是一个bug。
应用1:解决QQ2013的手势配置
有没有发现QQ的主界面用最小化手势后是有点小问题的(好友的聊天窗口是好的)。
111.png (23.88 KB, 下载次数: 61)
14:51 上传
任务栏会一直有个打开的状态在。怎么解决呢?
别忘记了,QQ还有个隐藏和打开的快捷键ctrl+alt+z这个快捷键在。
添加下就行了,不过,如果我想将这个手势设置成跟windows最小化的手势是一样的怎么办?如果直接设置的话,QQ主界面正常隐藏是没有问题了,任务栏不会有多余的东西了,可是聊天窗口的最小化就失效了。那么来了,这时候将Find window拖到QQ主界面上,好了,不用改了,直接确定,那么这个时候你设置的这个手势就只对QQ的主界面有效了,而QQ的聊天窗口已经不属于这个APP了,恭喜你,成功实现了QQ的最小化。
1111.png (82.42 KB, 下载次数: 78)
14:56 上传
应用2:实现彻底删除文件
只要彻底按下shift+delete,再执行回车键就可以了。
具体代码如下:
acSendShiftDown()
acSendKeys(&{DEL}&)
acSendShiftUp()
acSendKeys(&{DELAY=300}{ENTER}&)
这个是调试了很久调出来的,主要是一开始使用的+{DELETE}这种方式,有时候shift老是没有按下,只能删除到回收站,另外关于回车键的延时,建议用300,用50ms的时候经常没有按下回车。
应用3:让多个浏览器共用一套方案
可能你的电脑里有很多个浏览器,每个浏览器最常用的操作都是差不多的,那是不是就要为每套浏览器都写一套方案呢?
不是的,S+已经提供了解决方法。
在APP设置里,
QQ截图01.png (48.1 KB, 下载次数: 79)
22:01 上传
我们注意看到有File Name Pattern,即文件名匹配模式,我们如果想让火狐和Chrome公用一套方案的话,只要在这里填入chrome.exe|firefox.exe即可。
注意一点的是一定要与进程的大小写完全匹配,否则识别不了。
其他类似的,只要用a.exe|b.exe|c.exe写进这里,那么abc都可以用一套方案了。Tips:
扩展下,东西是死的,人是活的。
下面扩展下,两个的浏览器不能保证所有的手势都是相同的,那么怎么办呢?如何公用呢?
一套公用APP,2个私有APP就可以解决了。
建立一个Common Broswer的APP,将通用的手势写在这里。
分别建立Chrome和Firefox两个APP,单独设置不同的手势就可以了。
应用4:为打开某个网站指定手势
以卡饭为例
acShellExecute(&&, &&, &&, &&, &&)
应用5:用手势打造最快的Chrome这里我们需要借助一个Chrome扩展Shortcut Manager,大家去商店里搜索下就可以了。
这个扩展能够支持为脚本和一些特定的内置动作指定快捷键。
安装后打开扩展Shortcut Manager选项,选择Add a new shortcut即可新建一个配置,右侧的Shortcut key里面指定我们需要的快捷键,URL patterns自己看需求,没特别要求的就保持原样,然后在Action指定脚本或者动作。其中Browser action中就有关闭左侧标签,关闭右侧标签,关闭其他标签这3个是我使用的。弄好了保存下就行了。
(7.7 KB, 下载次数: 713)
18:15 上传
点击文件名下载附件
这里提供了上一页和下一页的脚本,放到Execute Javascript里面里面就可以了。
现在,是不是你的Chrome快多了呢?
应用6:用手势来实现关机
不用那么麻烦了。
acRunProgram(&c:\\windows\\system32\\shutdown.exe&,&-s -t 0&,0, 1)&&(感谢47楼兄弟提供)
其他重启或者注销自己看下shutdown的用法改一下参数就行了这里说明下,上面的只适用于win8以下系统,因为win8启用了全新的混合关机,如果用上面方法的话就会拖慢系统启动速度,因为使用了传统的关机模式。
要使用混合关机的话,请使用
acRunProgram(&c:\\windows\\system32\\shutdown.exe&,&-s -hybrid -t 0&,0, 1),推荐win8用户使用这种方式!
应用7:最快的页面内搜索
上面在剪贴板操作那里我给大家介绍过了一个全局搜索的手势,现在来讲讲最快的页面内手势操作吧,废话不多说,直接看脚本代码吧:
acSendKeys(&^c&)&&--先复制要搜索的内容,当然你也可以预先复制,只要不选中内容即可
acDelay(50)& && && & --延时50ms
acSendKeys(&^f&)& &--查找的快捷键
acSendKeys(&^v&)& &--此时输入焦点在搜索框中,我们粘贴即可
acSendKeys(&{DELAY=50}%{ENTER}&) --回车执行搜索操作
这个不仅仅可以用在浏览器中,在word等等文档中也是非常高频率的使用的。
应用8:加强版的前进后退
相应前进和后退手势是大部分人最常用的了,不过有时候前进和后退并不是一直可用的。比如说你直接打开了E:\test1\test2\test3之后你想要回到E:\test1\test2的话,那么显然是实现不了,只能按一下键盘上的Backspace才可以做到。那么如何用手势来实现这个操作呢?请看脚本代码:
function aGetURL()
& && &&&acSendKeys(&^l&)& && &--选中地址栏
& && &&&acSendKeys(&^c&)& && &--复制地址栏的内容&&
& && &&&return acGetClipboardText()& &--返回剪贴板的值
local x=aGetURL()& && && &&&--获取第一次地址栏的值
acSendKeys(&{BROWSERBACK}&)& &--执行返回操作
local y=aGetURL()& && && &&&--获取第二次地址栏的值
if x==y then& && && && && && &--这里就是关键,通过比较前后两次的值,如果相同的话,就说明后退是不可用的,那么就需要执行下backspace按键操作
acMouseClick(gex, gey, 2, 1, 1) --this sample clicks the right mouse button at 100,100; sending down and up button events&&--这一步主要是解决焦点问题,因为复制之后焦点在地址栏那里
acSendKeys(&{BS}&)& && &&&--退格操作。
前进的脚本思路类似,只要把退格换成回车就可以了。
不过这样的操作对于浏览器是没有意义的,而且这样的操作效率也不高。我们可以限定只在资源管理器中使用。代码如下
local i=acGetExecutableName(nil, gsx, gsy)&&--获取操作的进程名
if i~=&explorer.exe& then& && && && && && && && &&&--如果不是资源管理器
& && &&&acSendKeys(&{BROWSERBACK}&)
else& && && && && && && && && && && && && && && && && &&&--如果是资源管理器
function aGetURL()
& && &&&acSendKeys(&^l&)
& && &&&acSendKeys(&^c&)
& && &&&return acGetClipboardText()
local x=aGetURL()
acSendKeys(&{BROWSERBACK}&)
local y=aGetURL()
if x==y then
acMouseClick(gex, gey, 2, 1, 1) --this sample clicks the right mouse button at 100,100; sending down and up button events
acSendKeys(&{BS}&)
ps:此外,还可以通过判断窗口标题acGetWindowTitle的变化来实现,不过这样有个缺点,有时候会碰到d:\test\test\test这样的路径,手势就失效了,不过这样的方法从效率上来说比上面的判断地址栏要好。
应用9 打造鼠标右键的超级拖拽
不多说了,以Chrome为例,已经测试通过了。
acSetClipboardText(&&) --首先要清空原有剪贴板的内容
acSendKeys(&^c&)& & --如果是要进行搜索,就会先选中文字,那么这步就是要获得选中的文字
local url=acGetClipboardText() --从剪贴板获取值
acMouseClick(gsx, gsy, 0, 1, 1) --右击
if url~=&& then& && && && && && && &&&--如果剪贴板中有值,即是要进行搜索
acSendKeys(&{DELAY=50}s&)& &--请看右键菜单,你会明白,这个是要干嘛
else& && && && && && && && && && && && & --如果没有值,即是要打开一个链接
acSendKeys(&{DELAY=50}t&)
acMouseMove(gex,gey)& && && &&&--做一个鼠标移动,让手势平滑
再来看个增强版,可以实现,在不选中文字并且没有在网页链接上执行手势的时候进行自动翻页。
acSetClipboardText(&&) --首先要清空原有剪贴板的内容
acSendKeys(&^c&)& & --如果是要进行搜索,就会先选中文字,那么这步就是要获得选中的文字
local url=acGetClipboardText() --从剪贴板获取值
acMouseClick(gsx, gsy, 0, 1, 1) --右击
if url~=&& then& && && && && && && &&&--如果剪贴板中有值,即是要进行搜索
acSendKeys(&{DELAY=50}s&)& &--请看右键菜单,你会明白,这个是要干嘛
acDelay(50)& &
acSendAltDown()& && && && && && && && && && && &--先关闭右键菜单
acSendAltUp()
local prevTitle=acGetWindowTitle(nil, gsx, gsy)& &--获取当前浏览器标题
acSendControlDown()& && && && && && && && && && && && &--按下ctrl键,来实现后台打开网页acSendShiftDown()
acMouseClick(gsx, gsy, 2, 1, 1) --模拟左键单击
acSendShiftUp()
acSendControlUp()
local lastTitle=acGetWindowTitle(nil, gsx, gsy)& &--获取第二次的浏览器标题
if prevTitle==lastTitle then& && && && && && && && && &&&--如果两次结果相同,即没有在链接上执行手势
& && &&&acSendKeys(&{PGDN}&)& && && && && && && && && & --翻页操作
acMouseMove(gex,gey)& && && &&&--做一个鼠标移动,让手势平滑
以上都是基于Chrome的,下面再来个通用版的,感谢defpt提供acMouseMove(gsx,gsy)
acSetClipboardText(&&)&&
acSendKeys(&^c&)& && && &&&
acDelay(50)& && && && && && && && && &
if acGetClipboardText()~=&& then& &
& &acSendKeys(&^e&)
& &acSendKeys(&^v&)
& &acSendKeys(&%{ENTER}&)& && && && &&&
& &elseif acGetMouseCursorType() == &HAND& then& &--判定链接
& &acMouseClick(gsx, gsy, 1, 1, 1)& && && && && && && && && &--点击中键,后台新标签打开链接
else acSendKeys(&{PGDN}&) end& && && && && && && && && && & --向下滚屏
acMouseMove(gex,gey)
应用10 open with other Browser
感谢defpt提供
Open with IE:
if acGetExecutableName(nil,gsx,gsy)~=&iexplore.exe&
acSendKeys(&^l&) --聚焦地址栏
acSendKeys(&^c&) --复制地址
local url=acGetClipboardText()
url=string.gsub(url,&https?://&,&&)&&--地址匹配,IE不需要 &http://& or &https://&
acRunProgram(&C:\\Program Files\\Internet Explorer\\iexplore.exe&,url,0, 1)
//Open with Firefox
if acGetExecutableName(nil,gsx,gsy)~=&firefox.exe&
acSendKeys(&^l&)
acSendKeys(&^c&)&&
local url=acGetClipboardText()
--url=string.gsub(url,&https?://&,&&), Firefox does not need this.
acRunProgram(&D:\\Program Files\\Mozilla Firefox\\firefox.exe&,url,0, 1) --注意自己的Firefox路径
版区有你更精彩: )
竟然没淫加分.....
支持技术性文章,希望楼主多多发帖
支持楼主写教程
lyttmonkey
不过,浏览器自带的鼠标手势,总有各种各样的缺点,比如说自定义性不强,流畅度不够,使用有限制等等。
以上:目测楼主没用过opera
吹自田野的风
lyttmonkey 发表于
不过,浏览器自带的鼠标手势,总有各种各样的缺点,比如说自定义性不强,流畅度不够,使用有限制等等。
只用过一天,太小众了,各种不习惯……
搬个板凳坐等,正打算学习呢,现在常用枫树,但是有时候在老机器上要用opera、gb之类的浏览器,让习惯了枫树里面鼠标手势的我很不舒服,打算用这个的全局来实现类似枫树的手势。
flowershere
lyttmonkey 发表于
不过,浏览器自带的鼠标手势,总有各种各样的缺点,比如说自定义性不强,流畅度不够,使用有限制等等。
opera的自定义也仅限于浏览器,不是全局,功能上跟strokeit这种软件相比也有很大差距。
不过所有浏览器的鼠标手势里,基本没有能够赶超opera的。
吹自田野的风
nxhzzy 发表于
搬个板凳坐等,正打算学习呢,现在常用枫树,但是有时候在老机器上要用opera、gb之类的浏览器,让习惯了枫树 ...
教程会慢慢写的,请耐心看。
lyttmonkey
flowershere 发表于
opera的自定义也仅限于浏览器,不是全局,功能上跟strokeit这种软件相比也有很大差距。
不过所有浏览器的 ...
这里是浏览器区系统全局另说
dreamcatcher076
不错 支持!
看不懂英文的小白表示后悔当初没有好好学英文
1 / 129 页
Copyright & KaFan & All Rights Reserved.
Powered by Discuz! X3.1( 苏ICP备号 ) GMT+8,

我要回帖

更多关于 华为荣耀6plus桌面 的文章

 

随机推荐