找回密码
 加入
搜索
查看: 3181|回复: 14

[网络通信] 【已解决】关于防止窗口被最小化

[复制链接]
发表于 2019-12-5 20:21:40 | 显示全部楼层 |阅读模式
本帖最后由 anythinging 于 2019-12-7 08:19 编辑

各位大神,我想创建一个窗口,使其不被通过使用win+D或显示桌面最小化,现在通过$WS_EX_TOPMOST可以实现,但存在个问题,会挡住所有窗口,想请教下有没有好的方法来实现
$WinMain = GUICreate("WinMain",@DesktopWidth,@DesktopHeight,0,0,$WS_POPUP,$WS_EX_LAYERED+$WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
感谢指点!
发表于 2019-12-6 23:15:59 | 显示全部楼层
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +30 收起 理由
anythinging + 30 赞一个!

查看全部评分

发表于 2019-12-6 09:49:51 | 显示全部楼层
$Form1 = GUICreate("WinMain", 615, 437, 192, 124, $WS_POPUP, $WS_EX_TOOLWINDOW)
_WinAPI_SetParent(WinGetHandle($Form1), WinGetHandle("[Class:Progman;Title:Program Manager]"))
发表于 2019-12-6 12:51:35 | 显示全部楼层
看了你的帖子,先是防止被关闭,然后是防止被最小化。
一个消息就可以搞定的。如此这般:
#NoTrayIcon
Global $MainForm = GUICreate("WinMain")
GUISetState()
GUIRegisterMsg(0x0112, 'WM_SYSCOMMAND')
While 1
WEnd
Func WM_SYSCOMMAND($hWnd, $iMsg, $wParam, $lParam)
        Switch $hWnd
                Case $MainForm
                        Switch $wParam
                                Case 0xF060 ;关闭
;~                                         Exit
                                Case 0xF020 ;最小化
;~                                         GUISetState(@SW_MINIMIZE)
                                        Return 0
                        EndSwitch
        EndSwitch
        Return 'GUI_RUNDEFMSG'
EndFunc   ;==>WM_SYSCOMMAND
 楼主| 发表于 2019-12-6 16:42:15 | 显示全部楼层
haijie1223 发表于 2019-12-6 12:51
看了你的帖子,先是防止被关闭,然后是防止被最小化。
一个消息就可以搞定的。如此这般:

感谢回复,这个好象还是不能防止使用win+d,或点击显示桌面实现最小化的操作。
 楼主| 发表于 2019-12-6 16:48:34 | 显示全部楼层

感谢回复,测试了这个代码点击最小化后窗口就不见了,同时也不能防止 显示桌面和win+d
发表于 2019-12-6 18:21:30 | 显示全部楼层
anythinging 发表于 2019-12-6 16:42
感谢回复,这个好象还是不能防止使用win+d,或点击显示桌面实现最小化的操作。

你说的那个软件是用的定时器,每隔两秒激活一次窗口而已。
#NoTrayIcon
Global $MainForm = GUICreate("WinMain")
GUISetState()
WinSetOnTop($MainForm,'',1)
GUIRegisterMsg(0x0112, 'WM_SYSCOMMAND')
While 1
        Sleep(2000)
        WinActivate($MainForm)
WEnd
Func WM_SYSCOMMAND($hWnd, $iMsg, $wParam, $lParam)
        Switch $hWnd
                Case $MainForm
                        Switch $wParam
                                Case 0xF060 ;关闭
;~                                         Exit
                                Case 0xF020 ;最小化
;~                                         GUISetState(@SW_MINIMIZE)
                                        Return 0
                        EndSwitch
        EndSwitch
        Return 'GUI_RUNDEFMSG'
EndFunc   ;==>WM_SYSCOMMAND
发表于 2019-12-6 18:27:32 | 显示全部楼层
Windows 10 1809 17763 通过
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("WinMain", 615, 437, 192, 124, $WS_POPUP, $WS_EX_TOOLWINDOW)
_WinAPI_SetParent(WinGetHandle($Form1), WinGetHandle("[Class:Progman;Title:Program Manager]"))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

        EndSwitch
WEnd
 楼主| 发表于 2019-12-6 19:14:31 | 显示全部楼层
nmgwddj 发表于 2019-12-6 18:27
Windows 10 1809 17763 通过

感谢回复!一直用的系统是win10 10.0.17763.864,不行。
我换了一个虚拟机系统,2019,确实可以了。
;$Form1 = GUICreate("WinMain", 615, 437, 192, 124, $WS_POPUP, $WS_EX_TOOLWINDOW)
$Form1 = GUICreate("WinMain", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
_WinAPI_SetParent(WinGetHandle($Form1), WinGetHandle("[Class:Progman;Title:Program Manager]"))
但还遇到一个问题,如果用您的代码宽高是正常的,如果用变量@DesktopWidth, @DesktopHeight,就会变小,不知是什么原因。这个是加了_WinAPI_SetParent(WinGetHandle($Form1), WinGetHandle("[Class:Progman;Title:Program Manager]"))后的效果

本帖子中包含更多资源

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

×
 楼主| 发表于 2019-12-7 08:18:24 | 显示全部楼层
zghwelcome 发表于 2019-12-6 23:15
**** 本内容被作者隐藏 ****

感谢指点,这个是真真好用,不挑系统。
发表于 2019-12-8 11:55:27 | 显示全部楼层
看看隐藏回复
发表于 2019-12-9 21:06:14 | 显示全部楼层
学习一下,的确很想知道如何办到。
发表于 2019-12-11 12:20:19 | 显示全部楼层
回复看看本帖隐藏内容
发表于 2019-12-15 16:33:47 | 显示全部楼层
学习一下~~~~~~~~~~~···
发表于 2020-1-3 09:44:19 | 显示全部楼层
先做个记号,以免以后会用到
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 08:47 , Processed in 0.079297 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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