C#.如何使注册表编辑的Caret Width立即生效?

问题描述 投票:0回答:1

我在注册表中找到了一个Caret Width的路径。HKEY_USERS/S-1-5-21-1217365396-2387141574-3682890637-1001/控制面板/桌面。. 价值"齿条宽度" = 1. 我想把它改成5,例如,但如何使这个变化立即生效? 我想需要使用pinvoke.net中的一些方法,但我不知道怎么做。 你能帮助我吗?

c# winapi registry
1个回答
1
投票

你可以使用 系统参数信息 并通过 SPI_SETCARETWIDTH


1
投票
    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
            }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.