Esempio n. 1
0
        public static Settings CreateDefaultSettings()
        {
            var result = new Settings {DefaultLayoutName = "ENU"};

            var colorizationParams = new DwmApi.WDM_COLORIZATION_PARAMS
            {
                Color1 = 3640655872,
                Color2 = 3640655872,
                Opaque = 1,
                Intensity = 100,
                Unknown1 = 10,
                Unknown2 = 120,
                Unknown3 = 50
            };

            result.DefaultLayoutColorScheme = colorizationParams;

            colorizationParams = new DwmApi.WDM_COLORIZATION_PARAMS
            {
                Color1 = 3640680576,
                Color2 = 3640680576,
                Opaque = 1,
                Intensity = 100,
                Unknown1 = 10,
                Unknown2 = 120,
                Unknown3 = 50
            };

            result.AlternativeLayoutColorScheme = colorizationParams;

            return result;
        }
Esempio n. 2
0
        public static void SetColor(IntPtr layoutHandle, Settings settings)
        {
            if (layoutHandle == currentLanguageHanlder) return;
            currentLanguageHanlder = layoutHandle;

            string languageName = null;
            foreach (InputLanguage language in installedInputLanguages)
            {
                if (language.Handle == layoutHandle)
                {
                    languageName = language.Culture.ThreeLetterWindowsLanguageName;
                    break;
                }
            }

            if (languageName == null) return;

            try
            {
                if (!DwmApi.DwmIsCompositionEnabled())
                    return;
                var colorizationParams = (languageName == settings.DefaultLayoutName)
                    ? settings.DefaultLayoutColorScheme
                    : settings.AlternativeLayoutColorScheme;
                DwmApi.DwmSetColorizationParameters(ref colorizationParams, 0);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                throw;
            }
        }
Esempio n. 3
0
        public static Settings Deserialize(byte[] serializedSettings)
        {
            var settings = new Settings();

            using (var reader = new BinaryReader(new MemoryStream(serializedSettings)))
            {
                var defaultLayoutNameLength = reader.ReadInt32();
                var buffer = reader.ReadBytes(defaultLayoutNameLength);
                settings.DefaultLayoutName = Encoding.UTF8.GetString(buffer);
                var colorizationParams = new DwmApi.WDM_COLORIZATION_PARAMS
                {
                    Color1 = reader.ReadUInt32(),
                    Color2 = reader.ReadUInt32(),
                    Opaque = reader.ReadUInt32(),
                    Intensity = reader.ReadUInt32(),
                    Unknown1 = reader.ReadUInt32(),
                    Unknown2 = reader.ReadUInt32(),
                    Unknown3 = reader.ReadUInt32()
                };
                settings.DefaultLayoutColorScheme = colorizationParams;

                colorizationParams = new DwmApi.WDM_COLORIZATION_PARAMS
                {
                    Color1 = reader.ReadUInt32(),
                    Color2 = reader.ReadUInt32(),
                    Opaque = reader.ReadUInt32(),
                    Intensity = reader.ReadUInt32(),
                    Unknown1 = reader.ReadUInt32(),
                    Unknown2 = reader.ReadUInt32(),
                    Unknown3 = reader.ReadUInt32()
                };
                settings.AlternativeLayoutColorScheme = colorizationParams;
            }

            return settings;
        }
Esempio n. 4
0
 private void LoadOrCreateDefaultSettings()
 {
     string settingsFileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
         MainForm.settingsFileName);
     Settings newSettings;
     try
     {
         byte[] binary = File.ReadAllBytes(settingsFileName);
         newSettings = Settings.Deserialize(binary);
     }
     catch (Exception)
     {
         newSettings = Settings.CreateDefaultSettings();
         try
         {
             File.WriteAllBytes(settingsFileName, Settings.Serialize(newSettings));
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.ToString(), "Не удалось сохранить настройки по умолчанию", MessageBoxButtons.OK,
                 MessageBoxIcon.Error);
         }
     }
     settings = newSettings;
 }
Esempio n. 5
0
 public static byte[] Serialize(Settings settings)
 {
     var stream = new MemoryStream();
     var defaultLayoutNameBytes = Encoding.UTF8.GetBytes(settings.DefaultLayoutName);
     stream.Write(BitConverter.GetBytes(defaultLayoutNameBytes.Length), 0, sizeof (int));
     stream.Write(defaultLayoutNameBytes, 0, defaultLayoutNameBytes.Length);
     var buffer = SerializeColorizationParams(settings.DefaultLayoutColorScheme);
     stream.Write(buffer, 0, buffer.Length);
     buffer = SerializeColorizationParams(settings.AlternativeLayoutColorScheme);
     stream.Write(buffer, 0, buffer.Length);
     return stream.ToArray();
 }