Определения параметра SystemParametersInfo для C#

Я хочу позвонить в SystemParametersInfo от C#. Первым аргументом этой функции является одно из большого количества возможных значений как SPI_GETACCESSTIMEOUT, которые перечислены в документации, но, кажется, не определяются нигде.

Я могу пойти, находят фактические значения этих вещей в сети и составляют перечисление с правильными магическими числами в нем - который работает, но это не правильная вещь. Я хочу смочь включать что-то, что делает все это для меня. Они должны быть определены где-нибудь!

Что я делаю для создания этой работы правильно?


OJ указывает на страницу SPI, которая является большой, если я хочу скопировать все это в мой исходный код. Но я хочу, чтобы компилятор сделал это.

Я должен просто смочь сказать:

[DllImport("user32", CharSet = CharSet.Auto)]
private static extern bool SystemParametersInfo(int uAction, bool uParam, int lpvParam, int fuWinIni);
SystemParametersInfo(SPI_GETACCESSTIMEOUT, 0, ref IsActive, 0);

Вместо этого я должен добавить:

public const uint SPI_GETACCESSTIMEOUT = 0x003C;

... и вся остальная часть его также. Я ищу некоторую команду, которая импортирует все те определения из того, везде, где они живут в dll.

6
задан Andrew 11 March 2010 в 07:49
поделиться

1 ответ

Это именно то, о чем pinvoke.net :)

Для полного описания и примера кода см. страницу SystemParametersInfo. Имейте в виду, что вы должны использовать pinvoke для борьбы с этим API, насколько мне известно.

Аплодисменты!

EDIT: В случае, если это не сразу очевидно, информацию о SPI_GETACCESSTIMEOUT можно найти на странице SPI (ссылка на которую приведена со страницы SystemParametersInfo). Есть также другой образец здесь.

2
ответ дан 17 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

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