2010-03-11 104 views
6

我想从C#中调用SystemParametersInfo。这个函数的第一个参数是SPI_GETACCESSTIMEOUT这类可能值的大集合之一,它们在文档中列出,但似乎没有在任何地方定义。SystemParametersInfo参数定义C#

我可以在网络上找到这些东西的实际值,并在其中使用正确的幻数进行枚举 - 这是有效的,但这不是正确的。我想能够包含一些为我做的一切。他们必须在某个地方定义!

我该怎么做才能正常工作?


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中的任何位置导入所有这些定义。

+0

所以你基本上要求的是SystemParametersInfo的管理版本。简短的回答是,没有一个(在发布时)。你必须像已经演示过的那样使用p/invoke。就是那样子! – 2010-03-21 22:24:12

回答

2

这正是pinvoke.net是怎么一回事:)

完整的说明和示例代码见SystemParametersInfo page。请记住,就我所知,您必须使用pinvoke来处理此API。

干杯!

编辑:在情况下,它不会立即明显,对于SPI_GETACCESSTIMEOUT的信息可以在SPI page(这是从SystemParametersInfo友情链接)中找到。还有另一个样本here