用AutoHotkey一键打开、激活、或隐藏Chrome(或其他软件)
热键的效果:
1、Chrome没打开时,打开Chrome
2、Chrome已打开,未激活时,则激活Chrome
3、Chrome已激活,则隐藏Chrome
本来这种功能对AutoHotkey来说非常简单,
但是在激活Chrome或FireFox浏览器的时候却总是无效,
经朋友指点是有些程序的窗口会存在N个子窗口,
所以增加了寻找主窗口HWND的过程,就可以正常激活了。
完整代码如下:
#a::hyf_onekeyWindow("d:\Chrome\Chrome.exe", "Chrome_WidgetWin_1", "\S") ;注意修改Chrome路径 hyf_onekeyWindow(exePath, titleClass := "", titleReg := "")
{ ;有些窗口用Ahk_exe exeName判断不准确,所以自定义个titleClass
SplitPath, exePath, exeName, , , noExt
If !hyf_processExist(exeName)
{
;hyf_tooltip("启动中,请稍等...")
Run,% exePath
;打开后自动运行 TODO
funcName := noExt . "_runDo"
If IsFunc(funcName)
{
;hyf_tooltip("已自动执行函数:" . funcName)
Func(funcName).Call()
}
Else If titleClass
{
WinWait, Ahk_class %titleClass%, , 1
WinActivate Ahk_class %titleClass%
}
}
Else If WinActive("Ahk_exe " . exeName)
{
funcName := noExt . "_hideDo"
If IsFunc(funcName)
Func(funcName).Call()
WinHide
;激活鼠标所在窗口 TODO
MouseGetPos, , , idMouse
WinActivate Ahk_id %idMouse%
}
Else
{
If titleReg
titleClass := "Ahk_id " . hyf_getMainIDOfProcess(exeName, titleClass, titleReg)
Else If titleClass
titleClass := "Ahk_class " . titleClass
Else
titleClass := "Ahk_exe " . exeName
WinShow %titleClass%
WinActivate %titleClass%
funcName := noExt . "_activeDo"
If IsFunc(funcName)
{
;hyf_tooltip("已自动执行函数:" . funcName)
Func(funcName).Call()
}
}
} hyf_processExist(n) ;判断进程是否存在(返回PID)
{ ;n为进程名
Process, Exist, %n% ;比IfWinExist可靠
Return ErrorLevel
} hyf_tooltip(str, t := 1, ExitScript := 0, x := "", y := "") ;提示t秒并自动消失
{
t *= 1000
ToolTip, %str%, %x%, %y%
SetTimer, hyf_removeToolTip, -%t%
If ExitScript
{
Gui, Destroy
Exit
}
} hyf_getMainIDOfProcess(exeName, cls, titleReg := "") ;获取类似chrome等多进程的主程序ID
{
DetectHiddenWindows, On
WinGet, arr, List, Ahk_exe %exeName%
Loop,% arr
{
n := arr%A_Index%
WinGetClass, classLoop, Ahk_id %n%
;MsgBox,% A_Index . "/" . arr . "`n" . classLoop . "`n" . cls
If (classLoop = cls)
{
If !StrLen(titleReg) ;不需要判断标题
Return n
WinGetTitle, titleLoop, Ahk_id %n%
;MsgBox,% A_Index . "/" . arr . "`n" . classLoop . "`n" . titleLoop
If (titleLoop ~= titleReg)
Return n
}
Continue
}
Return False
} hyf_removeToolTip() ;清除ToolTip
{
ToolTip
}
用AutoHotkey一键打开、激活、或隐藏Chrome(或其他软件)的更多相关文章
- Linkclump – 批量打开多个链接[Chrome]
我的收藏 | 登录 首页 » Chrome » Linkclump – 批量打开多个链接[Chrome] 收藏 2 (1 votes) 青小蛙 on 2016.04.06. Linkclump 是一 ...
- 一键打开 jupyter
一般打开jupyter notebook 是以下步骤: 打开cmd-----输入:jupyter notebook-----按Enter键 为了省事,写了一个.py文件实现上述步骤,代码如下: imp ...
- 【google chrome 一键打开 谷歌跳转的页面+JS Replace】谷歌无法打开网页的时候,提取网页中url的部分
经常在谷歌搜索,遇到网页无法打开,然后就停留在比如:http://www.google.com.hk/search?newwindow=1&safe=strict&site=& ...
- 用AutoHotkey一键完成Xmind里的几个功能
F5一键添加超链接(类型为主题),常规步骤:Ctrl_h打开窗口,点击[主题],激活光标到输入框. Ctrl-i一键添加截取的图片,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里Ctrl-i ...
- selenium打开带有扩展的chrome
每当用跑用例失败的时候,第一反应就是查看元素定位是不是正确,帮助定位的扩展是必不可少的,但是selenium一般打开的是不带扩展的干净的浏览器,如果操作步骤很长的话,就得手动去执行直到那一步去检查元素 ...
- 借助 AppleScript 一键打开工作空间
我有个小毛病:同时只能在一个工程里工作. 假如让我开四五个 Webstorm,在工程里 A 改个Bug,然后又到工程 B 里加个需求,再去工程 C 发个版,切来切去一会儿就懵了. 于是有了这个项目:m ...
- 根据复选框checkbox的选中状态来打开或关闭隐藏层
HTML: <input type="checkbox" id="check-expert"> <div id="expert&q ...
- 隐藏chrome空白标签栏的最近访问
chrome版本: 29.0.1547.76 m 找到安装路径下Custom.css文件,添加.most-visited{display:none !important}来修改样式. 我的路径为:C: ...
- 使用bat一键打开java、jar、py文件
直接运行jar是没有命令行窗口的,如果想有命令行窗口,一般来说是要 win+r 运行cmd,定位到所在目录,然后用命令行执行 java -jar xxx.jar 而对于python,打开py文件也是麻 ...
随机推荐
- SQL全文搜索引擎 Sphinx
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索, 它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索. Sphinx特别 ...
- django 请求体和请求体相关知识
请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: django 如果发送post请求,或者表单提交数据.如果不设置enctype属性. 就会以appli ...
- python 中is和= = 的区别
Python中的对象包含三要素:id.type.value,其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值. is判断的是a对象是否就是b对象,是通过id来判断的: ==判 ...
- 一行CMD命令kill(杀)掉你的进程
查看进程 pi@raspberry:~ $ ps -ef | grep python3 UID PID PPID C STIME TTY TIME CMD pi 4678 4666 0 11:57 p ...
- mapreduce去重
现有一个某电商网站的数据文件,名为buyer_favorite1,记录了用户收藏的商品以及收藏的日期,文件buyer_favorite1中包含(用户id,商品id,收藏日期)三个字段,数据内容以“\t ...
- python连接mysql数据库遇到的问题
1.源代码: from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy ...
- math.random()方法的使用
一:导言 以前总是被数字的范围正则搞的头大,在此总结了一下 二:用法 Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含m的整数: ...
- 文献综述一:基于UML技术的商品管理系统设计与实现
一.基本信息 标题:基于UML技术的商品管理系统设计与实现 时间:2018 出版源:福建电脑 文件分类:uml技术的研究 二.研究背景 使用 UML 技术对商品管理系统进行了分析与研究,使用户对商品信 ...
- Spark各个组件的概念,Driver进程
spark应用涉及的一些基本概念: 1.mater:主要是控制.管理和监督整个spark集群 2.client:客户端,将用应用程序提交,记录着要业务运行逻辑和master通讯. 3.sparkCon ...
- git知识点总结
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.集中式版本控制系统最大的 ...