不用說了,這個試用窗口真心非常討厭。
先說下原理
如果長期使用DevexPRess就會知道,Devexpress 實際上每30分鐘就會彈出一次試用窗口,還沒啥好辦法屏蔽。
后來通過分析Dev的代碼發現,他存儲的時間實際是在
注冊表的[HKEY_CURRENT_USER/SOFTWARE/DevExpress/Components]節點下存放的。
"SmartTagWidth"="350" "LastAboutShowedTime"="02/05/2017 10:41:32" "DisableSmartTag"="False"
子節點LastAboutShowedTime 就是上次顯示關于窗口的時間,如果一直更新這個時間,這樣不就不會顯示試用窗口啦!(當前時間-LastAboutShowedTime的絕對值大于30分鐘就會顯示,這是我反編譯Dev的源代碼發現的)
廢話不多說,上代碼
public class SetNoDisplay { private const string Data= "SOFTWARE//DevExpress//Components"; private const string keys = "LastAboutShowedTime"; private const string formate = "MM/dd/yyyy HH:mm:ss"; private const string disable = "DisableSmartTag"; private const string SmartTagWidth = "SmartTagWidth"; public void SetDate() { CreateKey(); try { RegistryKey regkey = Registry.CurrentUser; var key = regkey.OpenSubKey(Data, true); var value = key.GetValue(keys); var date = DateTime.Now.ToString(formate); key.SetValue(keys, date); regkey.Dispose(); } catch { } } private void CreateKey() { try { RegistryKey regkey = Registry.CurrentUser; var data = regkey.OpenSubKey(Data, true); if (data == null) { var subkey = regkey.CreateSubKey(Data); subkey.CreateSubKey(keys).SetValue(keys, DateTime.Now.ToString(formate)); subkey.CreateSubKey(disable).SetValue(keys, false); subkey.CreateSubKey(SmartTagWidth).SetValue(keys, 350); } regkey.Dispose(); } catch { } } public SetNoDisplay() { Task.Factory.StartNew(()=> { while (true) { SetDate(); Thread.Sleep(TimeSpan.FromSeconds(15)); } }); } }使用方法,在App應用中,直接New 一個SetNoDisplay就好了,就這么簡單。
新聞熱點
疑難解答