【已解决】关于防止窗口被最小化
本帖最后由 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)
感谢指点! **** Hidden Message *****
$Form1 = GUICreate("WinMain", 615, 437, 192, 124, $WS_POPUP, $WS_EX_TOOLWINDOW)
_WinAPI_SetParent(WinGetHandle($Form1), WinGetHandle("")) 看了你的帖子,先是防止被关闭,然后是防止被最小化。
一个消息就可以搞定的。如此这般:
#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 haijie1223 发表于 2019-12-6 12:51
看了你的帖子,先是防止被关闭,然后是防止被最小化。
一个消息就可以搞定的。如此这般:
感谢回复,这个好象还是不能防止使用win+d,或点击显示桌面实现最小化的操作。 nmgwddj 发表于 2019-12-6 09:49
感谢回复,测试了这个代码点击最小化后窗口就不见了,同时也不能防止 显示桌面和win+d 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 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(""))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd 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(""))
但还遇到一个问题,如果用您的代码宽高是正常的,如果用变量@DesktopWidth, @DesktopHeight,就会变小,不知是什么原因。这个是加了_WinAPI_SetParent(WinGetHandle($Form1), WinGetHandle(""))后的效果
zghwelcome 发表于 2019-12-6 23:15
**** 本内容被作者隐藏 ****
感谢指点,这个是真真好用,不挑系统。:face (36): 看看隐藏回复 学习一下,的确很想知道如何办到。 回复看看本帖隐藏内容 学习一下~~~~~~~~~~~··· 先做个记号,以免以后会用到
页:
[1]