lixiaolong 发表于 2012-2-29 15:37:11

回复 1# sanmoking

刚测试去掉GUISetStyle() 也可以.

sanmoking 发表于 2012-2-29 15:47:26

回复 14# 痒痒


    我换成最新的3.3.6.1,运行还是没有窗口,应该是$WS_POPUP, $WS_EX_LAYERED + $WS_EX_MDICHILD不能共存吧?

sanmoking 发表于 2012-2-29 15:55:00

回复 15# lixiaolong


    你这还是置顶啊

fuldho 发表于 2012-2-29 16:51:59

好像大家都没明白你的意思,截一个式样看看。

lixiaolong 发表于 2012-2-29 17:54:26

本帖最后由 lixiaolong 于 2012-2-29 18:33 编辑

回复 18# sanmoking

这个怎么样?XP不行Win7成功.

Global Const $WM_MOVE = 0x0003
Global Const $WM_LBUTTONDOWN = 0x0201
Global Const $GUI_RUNDEFMSG = 'GUI_RUNDEFMSG'
Global $TrayWnd = WinGetHandle('')

$Width = 500
$Hight = 300
$WinHight = @DesktopHeight - 38 - $Hight

$hGui = GUICreate('窗口非置顶显示但永久覆盖桌面任务栏 by lixiaolong', $Width, $Hight, -1, -1)
GUISetState()

GUIRegisterMsg($WM_MOVE, "WM_MOVE")

While 1
        $msg = GUIGetMsg()
        If Not WinActive($hGui) Then
                WinSetOnTop($hGui, '', 0)
        EndIf
        Switch $msg
                Case -3
                        Exit
                Case -7
                        WinSetOnTop($TrayWnd, '', 0)
                        WinSetOnTop($hGui, '', 1)
                        WinSetOnTop($hGui, '', 0)
        EndSwitch
WEnd

Func WM_MOVE($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg, $iwParam, $ilParam
        Local $nY = BitShift($ilParam, 16)

        If $nY > $WinHight Then WinSetOnTop($hGui, '', 1)
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_MOVE

zldfsz 发表于 2012-2-29 18:18:02

回复 4# afan
这是win7下的测试效果,好像是在任务栏下的

afan 发表于 2012-2-29 18:21:56

回复afan
这是win7下的测试效果,好像是在任务栏下的
zldfsz 发表于 2012-2-29 18:18 http://www.autoitx.com/images/common/back.gif


    那肯定是在下面了,没 Win7,没办法调试…

zldfsz 发表于 2012-2-29 18:34:58

回复 22# afan
将你的代码做了一点改动:将CLASS:Shell_TrayWnd改成CLASS:Button,在win7下也实现了之前xp下测试的效果,但现在用的win7,不知道在xp下是否有用
#include <WindowsConstants.au3>
HotKeySet('^q', '_Exit')
$hGui = GUICreate('任务栏 by afan', @DesktopWidth + 3, 50, 0, 2, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_MDICHILD, WinGetHandle(''))
GUICtrlCreateLabel('Ctrl - Q 退出', 100, 10, 100, 12)
GUISetBkColor(0x5896DF, $hGui)
WinSetTrans($hGui, '', 255)
GUISetState()

Do
Until GUIGetMsg() = -3

Func _Exit()
      Exit
EndFunc

afan 发表于 2012-2-29 18:36:30

回复 23# zldfsz


    Xp 下不成,呵呵

zldfsz 发表于 2012-2-29 18:40:01

本帖最后由 zldfsz 于 2012-2-29 18:47 编辑

回复 24# afan


那就先判断是什么操作系统,再执行代码:
#include <WindowsConstants.au3>
If @OSVersion="WIN_7" Then
        $Handle=WinGetHandle('')
Else
        $Handle=WinGetHandle('')
EndIf
HotKeySet('^q', '_Exit')
$hGui = GUICreate('任务栏 by afan', @DesktopWidth + 3, 50, 0, 2, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_MDICHILD,$Handle )
GUICtrlCreateLabel('Ctrl - Q 退出', 100, 10, 100, 12)
GUISetBkColor(0x5896DF, $hGui)
WinSetTrans($hGui, '', 255)
GUISetState()

Do
Until GUIGetMsg() = -3

Func _Exit()
      Exit
EndFunc

android2 发表于 2012-3-2 20:30:01

好东西啊!

android2 发表于 2012-3-2 20:30:03

好东西啊!好东西啊!

UID 发表于 2012-3-3 23:37:51

AFAN现在很利害了啊

syhw2222 发表于 2012-3-4 15:22:45

高手就是高手,解决问题就是快!

yhxhappy 发表于 2012-3-5 20:09:13

我觉得很简单啊#include <WindowsConstants.au3>

$Pos = WinGetPos("", "")                        ;取任务栏高度

$Gui = GUICreate("", @DesktopWidth, $Pos, 0, @DesktopHeight-$Pos, $WS_POPUP, $WS_EX_TOPMOST)
$Label = GUICtrlCreateLabel("单击退出", 1000, 10, 50, 15)

GUISetState()

Do
Until GUIGetMsg() = $Label
页: 1 [2] 3
查看完整版本: 如何使一个全屏窗口非置顶显示但永久覆盖桌面任务栏【已解决】