OSDN Git Service

自動設定を戻しそこねても、いつまでも設定が残らないようにする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 26 Jul 2015 13:25:44 +0000 (22:25 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 1 Aug 2015 09:32:02 +0000 (18:32 +0900)
KancolleSniffer.sln.DotSettings
KancolleSniffer/SystemProxy.cs

index 3ad25ad..b6eedd1 100644 (file)
@@ -3,6 +3,8 @@
        <s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">Default: Reformat Code</s:String>
        <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AFTER_TYPECAST_PARENTHESES/@EntryValue">False</s:Boolean>
        <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AROUND_MULTIPLICATIVE_OP/@EntryValue">True</s:Boolean>
+       <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_BEFORE_SIZEOF_PARENTHESES/@EntryValue">False</s:Boolean>
+       <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_BEFORE_TYPEOF_PARENTHESES/@EntryValue">False</s:Boolean>
        <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=API/@EntryIndexedValue">API</s:String>
        <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FLASHWINFO/@EntryIndexedValue">FLASHWINFO</s:String>
        <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
index 32fd0a6..22eba8e 100644 (file)
@@ -27,6 +27,8 @@ namespace KancolleSniffer
     public class SystemProxy\r
     {\r
         private InternetPerConnOptionList orgList;\r
+        private string currentUrl;\r
+        private int currentFlags;\r
 \r
         private void SaveSettings()\r
         {\r
@@ -56,11 +58,10 @@ namespace KancolleSniffer
         {\r
             SaveSettings();\r
             var flagsOpt =\r
-                (InternetPerConnOption)Marshal.PtrToStructure(orgList.pOptions, typeof (InternetPerConnOption));\r
-            var flagValue = new InternetPerConnOptionValue\r
-            {\r
-                dwValue = flagsOpt.Value.dwValue | (int)PerConnFlags.PROXY_TYPE_AUTO_PROXY_URL\r
-            };\r
+                (InternetPerConnOption)Marshal.PtrToStructure(orgList.pOptions, typeof(InternetPerConnOption));\r
+            currentFlags = flagsOpt.Value.dwValue | (int)PerConnFlags.PROXY_TYPE_AUTO_PROXY_URL;\r
+            var flagValue = new InternetPerConnOptionValue {dwValue = currentFlags};\r
+            currentUrl = url;\r
             var urlValue = new InternetPerConnOptionValue {pszValue = Marshal.StringToHGlobalAuto(url)};\r
             var opts = new[]\r
             {\r
@@ -89,6 +90,23 @@ namespace KancolleSniffer
         {\r
             if (orgList.dwSize == 0)\r
                 return;\r
+            var size = Marshal.SizeOf(typeof(InternetPerConnOption));\r
+            var urlOpt = (InternetPerConnOption)\r
+                Marshal.PtrToStructure((IntPtr)((long)orgList.pOptions + size), typeof(InternetPerConnOption));\r
+            var orgUrl = Marshal.PtrToStringAuto(urlOpt.Value.pszValue);\r
+            if (orgUrl == currentUrl) // The restoration was skipped or failed at last time.\r
+            {\r
+                // Simply unselect the Use automatic configuration script check box.\r
+                var flagsOpt = new InternetPerConnOption\r
+                {\r
+                    dwOption = PerConnOption.INTERNET_PER_CONN_FLAGS,\r
+                    Value = new InternetPerConnOptionValue\r
+                    {\r
+                        dwValue = currentFlags & ~(int)PerConnFlags.PROXY_TYPE_AUTO_PROXY_URL\r
+                    }\r
+                };\r
+                Marshal.StructureToPtr(flagsOpt, orgList.pOptions, false);\r
+            }\r
             var listSize = orgList.dwSize;\r
             var listBuff = Marshal.AllocCoTaskMem(listSize);\r
             Marshal.StructureToPtr(orgList, listBuff, false);\r
@@ -96,9 +114,6 @@ namespace KancolleSniffer
             Refresh();\r
 \r
             Marshal.FreeCoTaskMem(listBuff);\r
-            var size = Marshal.SizeOf(typeof (InternetPerConnOption));\r
-            var urlOpt = (InternetPerConnOption)\r
-                Marshal.PtrToStructure((IntPtr)((long)orgList.pOptions + size), typeof (InternetPerConnOption));\r
             Marshal.FreeHGlobal(urlOpt.Value.pszValue);\r
             Marshal.FreeCoTaskMem(orgList.pOptions);\r
             orgList.dwSize = 0;\r
@@ -106,8 +121,8 @@ namespace KancolleSniffer
 \r
         private IntPtr MarshalOptions(InternetPerConnOption[] opts)\r
         {\r
-            var buff = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof (InternetPerConnOption)) * opts.Length);\r
-            var size = Marshal.SizeOf(typeof (InternetPerConnOption));\r
+            var buff = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(InternetPerConnOption)) * opts.Length);\r
+            var size = Marshal.SizeOf(typeof(InternetPerConnOption));\r
             for (var i = 0; i < opts.Length; i++)\r
             {\r
                 var ptr = (IntPtr)((long)buff + (i * size));\r