Определения параметров SystemParametersInfo для C # - PullRequest
6 голосов
/ 11 марта 2010

Я хочу позвонить в 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.

1 Ответ

2 голосов
/ 11 марта 2010

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

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

Ура!

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

...