clswindow使用案例:窗口图钉-窗口置顶(含源码)

简介: clswindow使用案例:窗口图钉-窗口置顶(含源码)

说明:


本案例基于clswindow开发的一个小软件,功能是方便的对目标窗口设置置顶还是取消置顶。软件启动后会在每个窗口的标题栏右端加一个置顶功能的小控制块。通常情况下点击它会使得对应的窗口置顶,如果要取消置顶可以再次点击一下。

测试环境:win7x64


提示: 在win10上可能有一些位置遮挡本身的最小化等按钮,后期会调整。

部分代码摘录:


说明: 以下是部分代码摘录,您会看到软件大量使用了SetTop等方法。完整代码可以从底部github获得,里面有直接的编译好的exe可以直接使用。

Private Sub addControlBox()
    Dim w As New clsWindow, s$, v, i%
    w.GetWindowByTitleEx ".+?", 0, s, True, , DisplayedWindow
    v = Split(s, " ")
    For i = 0 To UBound(v)
        If v(i) <> Me.Hwnd Then
            If Not isHasAddControlBox(v(i)) Then
                w.Hwnd = v(i)
                If InStr("|SetWindowTop|Program Manager|", "|" & w.Caption & "|") = 0 Then
                    lngHandleHwnd = w.Hwnd
                    Call createControlWindow
                End If
            End If
        End If
    Next
End Sub
.
.
.
Private Sub setTagPos()
    isClickHandle = True
    wTag.SetTop Not wTag.IsTopmost
    Set Image1.Picture = IIf(wTag.IsTopmost, imgAfter.Picture, imgBefore.Picture)
    If wTag.IsTopmost Then
        wTag.SetTop
        wTag.Focus
        wMe.SetTop
    End If
    wTag.Focus
End Sub
Private Sub Timer1_Timer()
    If Not wTag.CheckWindow Then '如果窗口不存在就关闭
        Unload Me
    End If
    If wTag.IsForegroundWindow Then '如果当前是活动窗口,那么需要显示并移动控制窗口
        lngLeft = (wTag.Left + wTag.Width) * 15 - Me.Width - 60 * 15
        lngTop = wTag.Top * 15 + 60
        If Me.Left <> lngLeft Or Me.Top <> lngTop Then '位置需要更新时再移动
            Me.Move lngLeft, lngTop
        End If
        Me.Visible = True
        wMe.SetTop
    ElseIf Not wMe.IsForegroundWindow Then
        Me.Visible = False
    End If
    If wTag.IsTopmost <> isTop Then
        isTop = Not isTop
        Set Image1.Picture = IIf(isTop, imgAfter.Picture, imgBefore.Picture)
    End If
End Sub


image.png

点击下变成置顶,并且图标发生变化:

image.png

如果要退出可以点击右下角托盘,选择菜单“退出”

image.png

软件及源码下载


软件下载:github.com/sysdzw/SetW…

源码(github):github.com/sysdzw/SetW…

目录
相关文章
|
存储 Cloud Native 数据库
云原生多模数据库Lindorm权威指南|从入门到精通(持续更新 v2021.2)
Lindorm是阿里云发布的业界首款云原生多模数据库,支持宽表、时序、文件等多种类型海量数据的低成本存储、检索与分析,兼容HBase/Cassandra、OpenTSDB、Solr、SQL、HDFS等多种开源标准接口,希望通过本指南,可以给开发者给更多的了解和使用指导,本文将持续更新
12487 2
云原生多模数据库Lindorm权威指南|从入门到精通(持续更新 v2021.2)
|
前端开发 关系型数据库 MySQL
【PHP】thinkPHP6中的MVC思想的小案例
【PHP】thinkPHP6中的MVC思想的小案例
332 2
|
Linux API 开发工具
LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发
【8月更文挑战第5天】LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发
LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发
深入解析计算机科学的基础:原码、反码与补码
深入解析计算机科学的基础:原码、反码与补码
1022 0
|
存储 Cloud Native Linux
OpenCV鼠标操作(画红色方框截取图像)
OpenCV鼠标操作(画红色方框截取图像)
|
监控 NoSQL 测试技术
MongoDB性能最佳实践:如何制定更有效的基准测试?
感谢你与我们一起走过这段MongoDB性能最佳实践之旅,希望你能从中获取一些有用的信息
2275 3
MFC学习之路十三之定时器的使用
MFC学习之路十三之定时器的使用
402 0
|
缓存 Cloud Native 调度
Fluid支持分层数据缓存本地性调度(Tiered Locality Scheduling)
依赖容器化带来的高效部署、敏捷迭代,以及云计算在资源成本和弹性扩展方面的天然优势,以 Kubernetes 为代表的云原生编排框架吸引着越来越多的 AI 与大数据应用在其上部署和运行。但是数据密集型应用计算框架的设计理念和云原生灵活的应用编排的分歧,导致了数据访问和计算瓶颈。 CNCF开源项目Fluid作为 AI 与大数据云原生应用提供一层高效便捷的数据抽象,将数据从存储抽象出来,针对具体的场景(比如大模型),加速计算访问数据。
1176 0
|
存储 算法 搜索推荐
淘宝长辈模式技术实践万字总结
长辈模式就是:字大、简单。 四个字背后代表是近100人的项目组的努力,更是淘宝人的情怀与坚持。今天我们在帮助老年人更好得使用互联网产品,就是在帮助未来的自己。
492 0
淘宝长辈模式技术实践万字总结
|
存储 对象存储 容器
Kubernetes如何选择存储以及什么方式使用存储
如何在阿里的Kubernetes容器服务中使用存储
8590 0
Kubernetes如何选择存储以及什么方式使用存储