热键的效果:

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(或其他软件)的更多相关文章

  1. Linkclump – 批量打开多个链接[Chrome]

    我的收藏 | 登录 首页 » Chrome » Linkclump – 批量打开多个链接[Chrome] 收藏 2  (1 votes) 青小蛙 on 2016.04.06. Linkclump 是一 ...

  2. 一键打开 jupyter

    一般打开jupyter notebook 是以下步骤: 打开cmd-----输入:jupyter notebook-----按Enter键 为了省事,写了一个.py文件实现上述步骤,代码如下: imp ...

  3. 【google chrome 一键打开 谷歌跳转的页面+JS Replace】谷歌无法打开网页的时候,提取网页中url的部分

    经常在谷歌搜索,遇到网页无法打开,然后就停留在比如:http://www.google.com.hk/search?newwindow=1&safe=strict&site=& ...

  4. 用AutoHotkey一键完成Xmind里的几个功能

    F5一键添加超链接(类型为主题),常规步骤:Ctrl_h打开窗口,点击[主题],激活光标到输入框. Ctrl-i一键添加截取的图片,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里Ctrl-i ...

  5. selenium打开带有扩展的chrome

    每当用跑用例失败的时候,第一反应就是查看元素定位是不是正确,帮助定位的扩展是必不可少的,但是selenium一般打开的是不带扩展的干净的浏览器,如果操作步骤很长的话,就得手动去执行直到那一步去检查元素 ...

  6. 借助 AppleScript 一键打开工作空间

    我有个小毛病:同时只能在一个工程里工作. 假如让我开四五个 Webstorm,在工程里 A 改个Bug,然后又到工程 B 里加个需求,再去工程 C 发个版,切来切去一会儿就懵了. 于是有了这个项目:m ...

  7. 根据复选框checkbox的选中状态来打开或关闭隐藏层

    HTML:  <input type="checkbox" id="check-expert"> <div id="expert&q ...

  8. 隐藏chrome空白标签栏的最近访问

    chrome版本: 29.0.1547.76 m 找到安装路径下Custom.css文件,添加.most-visited{display:none !important}来修改样式. 我的路径为:C: ...

  9. 使用bat一键打开java、jar、py文件

    直接运行jar是没有命令行窗口的,如果想有命令行窗口,一般来说是要 win+r 运行cmd,定位到所在目录,然后用命令行执行 java -jar xxx.jar 而对于python,打开py文件也是麻 ...

随机推荐

  1. logrotate 日志管理

    查看logrotate 是否已安装 因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找 ...

  2. P4245 【模板】任意模数NTT

    Luogu4245 只要做三次的NTT,快的飞起 普通NTT,做9次 #include<cstdio> #include<cstring> #include<iostre ...

  3. Luogu P4095 [HEOI2013]Eden 的新背包问题 思维/动规

    当时一直在想前缀和...多亏张队提醒... 从1到n背次包,保存每一个状态下的价值,就是不要把第一维压掉:再从n到1背一次,同样记住每种状态: 然后询问时相当于是max(前缀+后缀),当然前缀后缀中间 ...

  4. Hash Join是Oracle CBO时代经常出现的一种连接方式

    Hash Join是Oracle CBO时代经常出现的一种连接方式,对海量数据处理时经常出现在执行计划里.本篇的上篇(http://space.itpub.net/17203031/viewspace ...

  5. 小程序自定义modal弹窗封装实现

    前言小程序官方提供了 wx.showModal 方法,但样式比较固定,不能满足多元化需求,自定义势在必行~ 老规矩先上图 点击某个按钮,弹出 modal框,里面的内容可以自定义,可以是简单的文字提示, ...

  6. python3 迭代器笔记

    #迭代器import syslist=[1,2,3,4]it=iter(list)while True: try: print(next(it)) except StopIteration: sys. ...

  7. 1.centos7 安装zookeeper

    1.安装jdk 1)查找jdk包: yum search java|grep jdk 2)安装: yum install -y java-1.8.0-openjdk.x86_64 2. 安装ZooKe ...

  8. linux终端没有GUI时python使用matplotlib如何画图

    import matplotlib as mpl mpl.use('Agg') #而且必须添加在import matplotlib.pyplot之前,否则无效 ======== ======== == ...

  9. JavaSE---反射(未完待续)

    1.概述 1.1 Java程序中许多对象在运行时会出现2种类型:编译时类型.运行时类型: eg:Person  person=new Student(); 这行代码在编译时为Person类型,运行时为 ...

  10. 安装Chrome插件Markdown Preview Plus

    1.在谷歌应用商店,安装Chrome插件Markdown Preview Plus   2.设置Markdown Preview Plus (1)鼠标左键该拓展插件 (2)鼠标右键该插件 3.将mar ...