6

C# から SystemParametersInfo を呼び出したい。この関数の最初の引数は、ドキュメントに記載されている SPI_GETACCESSTIMEOUT のような可能な値の大規模なコレクションの 1 つですが、どこにも定義されていないようです。

これらの値の実際の値を Web で見つけて、適切なマジック ナンバーを含む列挙型を作成できます。これは機能しますが、正しくありません。私は、私のためにそれをすべて行うものを含めることができるようにしたいと考えています. それらはどこかで定義する必要があります!

これを適切に機能させるにはどうすればよいですか?


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ページを参照してください。私の知る限り、このAPIを処理するにはpinvokeを使用する必要があることに注意してください。

乾杯!

編集:すぐにわからない場合は、SPI_GETACCESSTIMEOUTの情報はSPIページ(SystemParametersInfoページからリンクされています)にあります。ここに別のサンプルもあります。

于 2010-03-11T06:45:56.113 に答える