2015-05-25 4 views
0

Что я хочу сделать, так это отключить windows aero для пользователя, если он нажмет кнопку.Постоянно отключить Windows Aero с помощью vb.net

В настоящее время у меня есть этот код:

<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 включается снова.

Есть ли способ предотвратить это?

+0

Вы должны сохранить настройки где, читать настройки при запуске и отключить его, если это правда. – Derek

+0

Ну, я могу сохранить его на компьютере и прочитать его при запуске приложения. Но это не то, что я ищу! Мне нужно, чтобы Windows Aero всегда была отключена, если нажать кнопку. Если пользователь не вернется в приложение и не нажмет кнопку, чтобы снова включить Aero. –

+0

Ваша фразировка трудно понять. Что вы подразумеваете под «выключением приложения»? – Derek

ответ

0

Похоже, что в окнах 8 прозрачность по умолчанию отключена по умолчанию.

http://www.howtogeek.com/howto/windows-vista/disable-aero-on-windows-vista/

Кроме того, по ссылке: https://msdn.microsoft.com/en-us/library/windows/desktop/aa969510%28v=vs.85%29.aspx

Отключение DWM состава отключает его на весь рабочий стол. Композиция DWM будет автоматически активирована, когда все процессы, у которых отключена композиция, вызвали DwmEnableComposition, чтобы включить ее или были прерваны. Уведомление WM_DWMCOMPOSITIONCHANGED отправляется всякий раз, когда композиция DWM включена или отключена.

Так звучит для меня так, как будто вы должны покинуть свою программу. Вы можете сделать что-то вроде минимизации его на панели задач (в отличие от выхода из него). Кто знает, может быть, вы даже можете запустить отдельный исполняемый файл, который остается включенным и не отображается в панели задач или панели задач. Но вам придется покинуть процесс.

0

Если вы хотите, чтобы Aero был отключен «ПОСТОЯННО» для пользователя независимо от того, работает ли ваше приложение или нет, вам необходимо определить, где этот параметр находится в реестре и изменить этот параметр.

Если вы имели в виду, что вы хотите отключить его только для своего приложения (это означает, что при следующем запуске приложения он будет включен или отключен в зависимости от того, как он был установлен, когда он был последним закрыт), тогда вы необходимо будет сохранить это в пользовательской настройке.

Создайте новую настройку bool (область пользователя) в настройках проекта и назовите ее DWM. Затем, при нажатии кнопки click toggle это значение. Примените это значение к настройке во время выполнения.

EDIT: предыдущая версия привела бы к всегда ложной настройке. Я редактировал инструкции 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 

В OnLoad или запуска события вида/приложение, запустить код, чтобы установить истинное или ложное

DwmEnableComposition(My.Settings.DWM)