找回密码
 加入
搜索
查看: 16654|回复: 20

[GUI管理] 求高手出现,实现如此【超级置顶】的方法

 火.. [复制链接]
发表于 2010-7-30 11:02:46 | 显示全部楼层 |阅读模式
悬赏1000金钱已解决
本帖最后由 sanmoking 于 2010-7-31 23:58 编辑


上图是窗体正常的置顶状态(就那个notepad2的窗体)再怎么置顶都挡不住后面窗口的菜单项,本人用au3自带的置顶功能,用顽固不化提供的dll的方法,也只能达到这样的效果。



现在求能达到上述画面的方法(au3能实现的,且占用资源很小的),超级置顶的方法,能挡住菜单项的方法。谢谢。


刚才发现该函数和最佳答案的函数是一样的效果,_WinAPI_BringWindowToTop($Form1)


这是最后一个问题,已解决,完成的程序将在源码区公布,谢谢大家参与。。。
完成的程序见【鼠标傀儡
附件: 您需要 登录 才可以下载或查看,没有账号?加入

最佳答案

查看完整内容

不多说,上源
发表于 2010-7-30 11:02:47 | 显示全部楼层
不多说,上源
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         myName

 Script Function:
        Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here
#Include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("我就是这么犀利,谁能挡住我?还有谁?", 623,200, 192, 114)
GUISetState(@SW_SHOW)

While 1
        $hw=_WinAPI_GetForegroundWindow()
                If $hw<>$Form1 Then
                        _WinAPI_SetWindowPos($hw, -2, 0, 0, 0, 0, 3)
                    
                EndIf
                _WinAPI_SetWindowPos($Form1, -1, 0, 0, 0, 0, 3)
                $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
发表于 2010-7-30 13:28:34 | 显示全部楼层
本帖最后由 xsjtxy 于 2010-7-30 14:18 编辑
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 623, 449, 192, 114,$WS_EX_APPWINDOW,$WS_EX_TOPMOST)
GUISetState(@SW_SHOW)


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
 楼主| 发表于 2010-7-30 13:46:26 | 显示全部楼层
本帖最后由 sanmoking 于 2010-7-30 13:47 编辑

回复 2# xsjtxy

大侠试过了么。我想要的是前置窗口能盖过菜单条。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-7-30 16:01:50 | 显示全部楼层
学习了 继续努力
发表于 2010-7-31 00:20:37 | 显示全部楼层
楼主真是有钱人……
发表于 2010-7-31 00:39:18 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        WinSetOnTop ( "Form1", "", 1 )
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
歪脑筋?
 楼主| 发表于 2010-7-31 01:52:39 | 显示全部楼层
回复 6# 大绯狼

你的例子是可以的,可是我的窗口无效。
$Form1 = GUICreate("傀儡鼠标", $Width, $Height, $a, $b, $WS_POPUP, BitOR($WS_EX_TRANSPARENT,$WS_EX_LAYERED,$WS_EX_TOPMOST), WinGetHandle(AutoItWinGetTitle()))
发表于 2010-7-31 02:54:01 | 显示全部楼层
都透明了你还能看见?
发表于 2010-7-31 07:47:20 | 显示全部楼层
WinSetOnTop("Form1", "", 1)
要学习精髓,重点是这一行循环执行。。。
发表于 2010-7-31 10:24:26 | 显示全部楼层
歪脑筋?
大绯狼 发表于 2010-7-31 00:39



    这个窗体有时有其它置顶层出现,会闪一下

Ie的弹出窗口就可以一直置顶,而且不会闪
发表于 2010-7-31 10:31:14 | 显示全部楼层
很有创意啊。不错。值得学习
很多时候我们就是缺少给思想转个弯的灵感
发表于 2010-7-31 11:04:47 | 显示全部楼层
歪脑筋?
大绯狼 发表于 2010-7-31 00:39



   楼主给钱
你这段也挡不住我.
发表于 2010-7-31 11:28:21 | 显示全部楼层
回复 13# akmm88
无意战争,只是纯技术讨论。
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         myName

 Script Function:
        Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here
#Include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("还是循环置顶?", 623,200, 192, 114)
GUISetState(@SW_SHOW)

While 1
                _WinAPI_SetWindowPos($Form1, -1, 0, 0, 0, 0, 3);前面的去掉,只有这句有用
                $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

评分

参与人数 1金钱 +100 收起 理由
sanmoking + 100 多谢参与。akmm88的在前,就他了。

查看全部评分

发表于 2010-7-31 11:54:43 | 显示全部楼层
_WinAPI_SetWindowPos($hw, -2, 0, 0, 0, 0, 3)
这个有没有用,要看实际场合,环境不同就不同.总体是有用的,必须的.
不用循环,普通窗口能做得到?
直接写屏,或DX也许能.那就不是个普通窗口了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 20:13 , Processed in 0.173240 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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