找回密码
 加入
搜索
查看: 23380|回复: 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 | 显示全部楼层
不多说,上源
  1. #cs ----------------------------------------------------------------------------

  2. AutoIt Version: 3.3.6.1
  3. Author:         myName

  4. Script Function:
  5.         Template AutoIt script.

  6. #ce ----------------------------------------------------------------------------

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

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

  13. While 1
  14.         $hw=_WinAPI_GetForegroundWindow()
  15.                 If $hw<>$Form1 Then
  16.                         _WinAPI_SetWindowPos($hw, -2, 0, 0, 0, 0, 3)
  17.                     
  18.                 EndIf
  19.                 _WinAPI_SetWindowPos($Form1, -1, 0, 0, 0, 0, 3)
  20.                 $nMsg = GUIGetMsg()
  21.         Switch $nMsg
  22.                 Case $GUI_EVENT_CLOSE
  23.                         Exit

  24.         EndSwitch
  25. WEnd
复制代码
发表于 2010-7-30 13:28:34 | 显示全部楼层
本帖最后由 xsjtxy 于 2010-7-30 14:18 编辑

  1. #include <GUIConstantsEx.au3>
  2. #include <WindowsConstants.au3>

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


  5. While 1
  6.         $nMsg = GUIGetMsg()
  7.         Switch $nMsg
  8.                 Case $GUI_EVENT_CLOSE
  9.                         Exit

  10.         EndSwitch
  11. 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 | 显示全部楼层
  1. #include <GUIConstantsEx.au3>
  2. #include <WindowsConstants.au3>
  3. #Region ### START Koda GUI section ### Form=
  4. $Form1 = GUICreate("Form1", 615, 438, 192, 124)
  5. GUISetState(@SW_SHOW)
  6. #EndRegion ### END Koda GUI section ###

  7. While 1
  8.         WinSetOnTop ( "Form1", "", 1 )
  9.         $nMsg = GUIGetMsg()
  10.         Switch $nMsg
  11.                 Case $GUI_EVENT_CLOSE
  12.                         Exit

  13.         EndSwitch
  14. 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 | 显示全部楼层
  1. 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
无意战争,只是纯技术讨论。
  1. #cs ----------------------------------------------------------------------------

  2. AutoIt Version: 3.3.6.1
  3. Author:         myName

  4. Script Function:
  5.         Template AutoIt script.

  6. #ce ----------------------------------------------------------------------------

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

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

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

  19.         EndSwitch
  20. 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, 2026-9-22 09:04 , Processed in 0.088626 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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