使用 vb.net 永久禁用 Windows Aero
Permanently disable Windows Aero using vb.net
我想做的是在用户单击按钮时永久禁用 windows aero。
目前我有这个代码:
<System.RunTime.InteropServices.DLLImport("dwmapi.dll", PreserveSig:=False)>
Public Shared Sub DwmEnableComposition(bEnable As Boolean)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DwmEnableComposition(False)
End Sub
此代码当前的问题是...它可以工作,但每当您退出应用程序时,Aero 都会重新打开。
有什么办法可以避免这种情况吗?
听起来像在 windows 8 中默认禁用 aero 透明度。
http://www.howtogeek.com/howto/windows-vista/disable-aero-on-windows-vista/
此外,来自 link:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969510%28v=vs.85%29.aspx
禁用 DWM 组合会对整个桌面禁用它。 当禁用组合的所有进程调用 DwmEnableComposition 以启用它或已终止时,DWM 组合将自动启用。每当启用或禁用 DWM 组合时,都会发送 WM_DWMCOMPOSITIONCHANGED 通知.
所以在我看来你需要离开你的程序 运行。你可以做一些事情,比如将它最小化到任务托盘(而不是退出它)。谁知道呢,也许您甚至可以只启动一个单独的可执行文件,它保持 运行 并且不会出现在任务栏或任务托盘中。但是你将不得不离开进程 运行.
如果您希望为用户禁用 Aero "PERMANENTLY",而不管您的应用是否 运行ning,那么您需要确定此设置在注册表中的位置,并且修改该设置。
如果您的意思是只想为您的应用程序禁用它(意味着下次启动该应用程序时,它将根据上次关闭时的设置启用或禁用),然后您需要将其存储在用户设置中。
在项目设置中创建一个新的 bool 设置(用户范围)并将其命名为 DWM。然后,在按钮单击事件中切换它的值。在 运行 时将该值应用于设置。
编辑:以前的版本会导致设置始终为错误。
我已将 If 语句编辑为 If-Else 块。
<System.RunTime.InteropServices.DLLImport("dwmapi.dll", PreserveSig:=False)>
Public Shared Sub DwmEnableComposition(bEnable As Boolean)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If My.Settings.DWM = False THEN
My.Settings.DWM = True
Else
My.Settings.DWM = False
End If
My.Settings.Save()
DwmEnableComposition(My.Settings.DWM)
End Sub
在form/app的onload或startup事件中,运行设置true或false的代码
DwmEnableComposition(My.Settings.DWM)
我想做的是在用户单击按钮时永久禁用 windows aero。
目前我有这个代码:
<System.RunTime.InteropServices.DLLImport("dwmapi.dll", PreserveSig:=False)>
Public Shared Sub DwmEnableComposition(bEnable As Boolean)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DwmEnableComposition(False)
End Sub
此代码当前的问题是...它可以工作,但每当您退出应用程序时,Aero 都会重新打开。
有什么办法可以避免这种情况吗?
听起来像在 windows 8 中默认禁用 aero 透明度。
http://www.howtogeek.com/howto/windows-vista/disable-aero-on-windows-vista/
此外,来自 link:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969510%28v=vs.85%29.aspx
禁用 DWM 组合会对整个桌面禁用它。 当禁用组合的所有进程调用 DwmEnableComposition 以启用它或已终止时,DWM 组合将自动启用。每当启用或禁用 DWM 组合时,都会发送 WM_DWMCOMPOSITIONCHANGED 通知.
所以在我看来你需要离开你的程序 运行。你可以做一些事情,比如将它最小化到任务托盘(而不是退出它)。谁知道呢,也许您甚至可以只启动一个单独的可执行文件,它保持 运行 并且不会出现在任务栏或任务托盘中。但是你将不得不离开进程 运行.
如果您希望为用户禁用 Aero "PERMANENTLY",而不管您的应用是否 运行ning,那么您需要确定此设置在注册表中的位置,并且修改该设置。
如果您的意思是只想为您的应用程序禁用它(意味着下次启动该应用程序时,它将根据上次关闭时的设置启用或禁用),然后您需要将其存储在用户设置中。
在项目设置中创建一个新的 bool 设置(用户范围)并将其命名为 DWM。然后,在按钮单击事件中切换它的值。在 运行 时将该值应用于设置。
编辑:以前的版本会导致设置始终为错误。 我已将 If 语句编辑为 If-Else 块。
<System.RunTime.InteropServices.DLLImport("dwmapi.dll", PreserveSig:=False)>
Public Shared Sub DwmEnableComposition(bEnable As Boolean)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If My.Settings.DWM = False THEN
My.Settings.DWM = True
Else
My.Settings.DWM = False
End If
My.Settings.Save()
DwmEnableComposition(My.Settings.DWM)
End Sub
在form/app的onload或startup事件中,运行设置true或false的代码
DwmEnableComposition(My.Settings.DWM)