6

我想从 C# 调用 SystemParametersInfo。该函数的第一个参数是大量可能值中的一个,例如 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 中的任何位置导入所有这些定义。

4

1 回答 1

2

这正是 pinvoke.net 的全部内容:)

有关完整说明和示例代码,请参阅SystemParametersInfo 页面。请记住,据我所知,您必须使用 pinvoke 来处理此 API。

干杯!

编辑:如果不是很明显,可以在SPI 页面(从 SystemParametersInfo 页面链接)上找到 SPI_GETACCESSTIMEOUT 的信息。这里还有另一个示例。

于 2010-03-11T06:45:56.113 回答