2010-03-11 19 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