C#. Как получить эффект для regitstry отредактированной ширины каретки сразу? - PullRequest
0 голосов
/ 23 апреля 2020


Я нашел путь к ширине каретки в моем реестре: HKEY_USERS \ S-1-5-21-1217365396-2387141574-3682890637-1001 \ Панель управления \ Рабочий стол . Значение " CaretWidth " = 1.
Я хочу изменить его на 5, например. Но как применить это изменение немедленно?
Я думаю, что нужно использовать какой-то метод из pinvoke. net, но я не знаю, как это сделать.
Вы можете мне помочь?

Ответы [ 2 ]

1 голос
/ 23 апреля 2020
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices; // Add

    namespace Caret_Changer
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            const int SPIF_UPDATEINIFILE = 0x01;
            const int SPIF_SENDCHANGE = 0x02;
            public const uint SPI_SETCARETWIDTH = 0x2007;

            [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
            public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, uint pvParam, uint fWinIni);

            private void ChangeCaret(uint caret)
            {
                SystemParametersInfo(SPI_SETCARETWIDTH, 0, caret, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
            }

            // Start button
            private void Button1_Click(object sender, EventArgs e)
            {
                ChangeCaret(0x0000005); // New caret width
            }

            // Stop Button
            private void Button2_Click(object sender, EventArgs e)
            {
                ChangeCaret(0x0000001); // Return default width
            }
        }
    }
1 голос
/ 23 апреля 2020

Вы можете использовать SystemParametersInfo и передать SPI_SETCARETWIDTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...