吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2761|回复: 9
收起左侧

[其他转载] autohotkey置顶代码

[复制链接]
hwlhwlxyz 发表于 2021-9-14 02:52

这是一个窗口置顶工具的ahk的代码。画红框参考了一下别人的代码。
习惯使用ahk的话,就可以不用安装别的软件了。快捷键是win+c,当前窗口会置顶,而且周围有红框显示。
复制代码保存成ahk后缀的文件就可以运行。

autohotkey的具体用法可以看官网:https://www.autohotkey.com/

#Persistent

border_thickness = 5
border_color = FF0000

DrawRect:
WinGetPos, x, y, w, h, %WinTitle%
if (x="")
    return
Gui, guiborder: +Lastfound +AlwaysOnTop +Toolwindow

borderType:="outside"                ; set to inside, outside, or both

if (borderType="outside") { 
    outerX:=0
    outerY:=0
    outerX2:=w+2*border_thickness
    outerY2:=h+2*border_thickness

    innerX:=border_thickness
    innerY:=border_thickness
    innerX2:=border_thickness+w
    innerY2:=border_thickness+h

    newX:=x-border_thickness
    newY:=y-border_thickness
    newW:=w+2*border_thickness
    newH:=h+2*border_thickness

} else if (borderType="inside") {   
    WinGet, myState, MinMax, A
    if (myState=1)
        offset:=8
    else 
        offset:=0

    outerX:=offset
    outerY:=offset
    outerX2:=w-offset
    outerY2:=h-offset

    innerX:=border_thickness+offset
    innerY:=border_thickness+offset
    innerX2:=w-border_thickness-offset
    innerY2:=h-border_thickness-offset

    newX:=x
    newY:=y
    newW:=w
    newH:=h

} else if (borderType="both") { 
    outerX:=0
    outerY:=0
    outerX2:=w+2*border_thickness
    outerY2:=h+2*border_thickness

    innerX:=border_thickness*2
    innerY:=border_thickness*2
    innerX2:=w
    innerY2:=h

    newX:=x-border_thickness
    newY:=y-border_thickness
    newW:=w+4*border_thickness
    newH:=h+4*border_thickness
}

Gui, guiborder: Color, %border_color%
Gui, guiborder: -Caption

WinSet, Region, %outerX%-%outerY% %outerX2%-%outerY% %outerX2%-%outerY2% %outerX%-%outerY2% %outerX%-%outerY%    %innerX%-%innerY% %innerX2%-%innerY% %innerX2%-%innerY2% %innerX%-%innerY2% %innerX%-%innerY% 

Gui, guiborder: Show, w%newW% h%newH% x%newX% y%newY% NoActivate, Table awaiting Action
return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;drawreact reference https://superuser.com/a/739000
#Persistent
BorderOn := False
#c::
    If BorderOn
    {
        Winset, Alwaysontop, Off , %WinTitle%
        BorderOn := False
        SetTimer, DrawRect, Off
        Gui, guiborder: Cancel
    }
    Else
    {
        MouseGetPos,,, WinID
        WinTitle = ahk_id %WinID%
        Winset, Alwaysontop, On , %WinTitle%
        BorderOn := True
        SetTimer, DrawRect, 50
        border_thickness = 5
        border_color = FF0000
    }

Return

screenshot

screenshot

pinanddrawrect.7z (886 Bytes, 下载次数: 18)

免费评分

参与人数 1吾爱币 +5 热心值 +1 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Natu 发表于 2021-9-14 14:22
本帖最后由 Natu 于 2021-9-14 16:48 编辑

单单为了一个窗口置顶,楼主大费周章,下边的代码是从网友那里复制来的,置顶够用了,对于加红色边框没兴趣,喜欢就用吧。
[AAuto] 纯文本查看 复制代码
;窗口置顶
   
#LButton::  ;将鼠标指针下的窗口置顶
WinSet,AlwaysOnTop,,A
Return
 楼主| hwlhwlxyz 发表于 2021-9-15 06:14
Natu 发表于 2021-9-14 14:22
单单为了一个窗口置顶,楼主大费周章,下边的代码是从网友那里复制来的,置顶够用了,对于加红色边框没兴趣 ...

简单功能确实就一行代码就可以,但是我这个还处理了一下各种情况,在已经有置顶的窗口的情况下,不管鼠标选中哪个窗口,按下快捷键会先取消。画红框也是为了分清楚当前操作是置顶还是取消置顶。经你这么一说我才想起我确实没有讲清楚这个逻辑。
Natu 发表于 2021-9-22 21:35
本帖最后由 Natu 于 2021-9-22 21:47 编辑
仅仅是个测试


这还是一个测试。


再次进行一个测试。
kenpt 发表于 2022-3-3 11:20
窗口置顶其实只要一句,如下:

;窗口置顶
!1::  Winset, Alwaysontop, , A

我用的是:Alt + 1 。即打开一个窗口,按一下alt+1,就将此窗口置顶了。
dcjpig 发表于 2022-3-14 21:43
不过我觉得楼主的思路也挺好的,用Winset, Alwaysontop, , A确实可以,但是在窗口切换时,会看不清哪些窗口置顶,想取消一个窗口置顶的时候反而会置顶了另外一个窗口…
dcjpig 发表于 2022-3-15 09:29
一个不知道恰不恰当的建议,可以在窗口的标题栏上显示置顶字样或者干脆一个红点,来标识已经置顶,而不是在周边显示红框,最大化置顶窗口的时候会有些不好看。我正在看LZ的代码,看能不能改成
 楼主| hwlhwlxyz 发表于 2022-3-27 09:03
dcjpig 发表于 2022-3-15 09:29
一个不知道恰不恰当的建议,可以在窗口的标题栏上显示置顶字样或者干脆一个红点,来标识已经置顶,而不是在 ...

我觉得你这个主意不错啊,因为我不看别的窗口而且这样比较显眼,所以用的红框,改好了可以发出来大家一起看看。
cuixh11 发表于 2022-3-27 09:23
感谢分享
alongzhenggang 发表于 2022-4-18 17:45
Natu 发表于 2021-9-14 14:22
单单为了一个窗口置顶,楼主大费周章,下边的代码是从网友那里复制来的,置顶够用了,对于加红色边框没兴趣 ...

百家争鸣 百花齐放
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表