C# 的 SystemParametersInfo 参数定义

Posted

技术标签:

【中文标题】C# 的 SystemParametersInfo 参数定义【英文标题】:SystemParametersInfo parameter definitions for C# 【发布时间】: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,如已演示的那样。就是这样! 【参考方案1】:

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

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

干杯!

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

【讨论】:

以上是关于C# 的 SystemParametersInfo 参数定义的主要内容,如果未能解决你的问题,请参考以下文章

SystemParametersInfo 将背景设置为纯色而不是实际设置图片

SystemParametersInfo调用失败的问题

关于API函数SystemParametersInfo()的问题!

SystemParametersInfo API学习(128个中文参数解释,215个实际值)

Windows API一日一练 75 SystemParametersInfo函数

阻止屏保运行显示器和系统待机(使用SystemParametersInfo和SetThreadExecutionState两种办法)