drem1lin
@drem1lin
чуть программист, чуть чуть админ...

Почему не работает SystemParametersInfo?

Пытаюсь из C# вызвать SystemParametersInfo и изменить направление сглаживания шрифтов SPI_SETFONTSMOOTHINGORIENTATION
Объявил функцию так
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(SPI uiAction, uint uiParam, ref uint pvParam, SPIF fWinIni);


Использую так, где value это одно из перечисления с направлениями
if (SystemParametersInfo(SPI.SPI_SETFONTSMOOTHINGORIENTATION, 0, ref value,
                SPIF.SPIF_UPDATEINIFILE | SPIF.SPIF_SENDCHANGE) == false)
            {
                int code = Marshal.GetLastWin32Error();              
                return false;
            }

Структуры объявлены так.
[Description("SPI_(System-wide parameter - Used in SystemParametersInfo function )"), Flags]
   public enum SPI : uint
   {
       /// <summary>
       /// Determines whether the warning beeper is on. 
       /// The pvParam parameter must point to a BOOL variable that receives TRUE if the beeper is on, or FALSE if it is off.
       /// </summary>
       SPI_GETBEEP = 0x0001,

   [Description("SPIF_(System-wide parameter - Used in SystemParametersInfo function )"), Flags]
     public enum SPIF : uint
    {
        None = 0x00,
        SPIF_UPDATEINIFILE = 0x01,
        SPIF_SENDCHANGE = 0x02,
  • Вопрос задан
  • 786 просмотров
Решения вопроса 1
drem1lin
@drem1lin Автор вопроса
чуть программист, чуть чуть админ...
Надо было объявить без ref
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(SPI uiAction, uint uiParam, ref uint pvParam, SPIF fWinIni);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы