【发布时间】:2011-01-26 06:06:28
【问题描述】:
我想从 C# 调用 SystemParametersInfo。此函数的第一个参数是大量可能值中的一个,例如 SPI_GETACCESSTIMEOUT,文档中列出了这些值,但似乎没有在任何地方定义。
我可以在网上找到这些东西的实际值,然后用正确的幻数组成一个枚举——这行得通,但它不是正确的东西。我希望能够包含一些对我有用的东西。它们必须在某个地方定义!
我该怎么做才能使这项工作正常进行?
OJ 指向SPI page,如果我想将所有这些内容复制到我的源代码中,那就太好了。 但我希望编译器这样做。
我只能说:
[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 中的任何位置导入所有这些定义。
【问题讨论】:
-
所以您实际上要求的是 SystemParametersInfo 的托管版本。简短的回答是,没有(在发布时)。您必须使用 p/invoke,如已演示的那样。就是这样!
标签: c# include system-calls definitions