2010-03-11 18 views
6

Deseo realizar una llamada a SystemParametersInfo desde C#. El primer argumento para esta función es uno de una gran colección de valores posibles, como SPI_GETACCESSTIMEOUT, que se enumeran en la documentación, pero que no parecen estar definidos en ninguna parte.Definiciones de parámetros SystemParametersInfo para C#

Puedo buscar los valores reales de estas cosas en la web y crear una enumeración con los números mágicos correctos, eso funciona, pero no es lo correcto. Quiero poder incluir algo que haga todo eso por mí. ¡Tienen que definirse en algún lado!

¿Qué debo hacer para que esto funcione correctamente?


puntos DO a la SPI page que es grande si quiero copiar todo lo que en mi código fuente. Pero quiero que el compilador haga eso.

yo debería ser capaz de decir:

[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); 

lugar tengo que añadir:

public const uint SPI_GETACCESSTIMEOUT = 0x003C; 

... y todo lo demás también. Estoy buscando algún comando que importe todas esas definiciones de donde vivan en el dll.

+0

Entonces, lo que básicamente está pidiendo es una versión administrada de SystemParametersInfo. La respuesta corta es que no hay una (en el momento de la publicación). Tienes que usar p/invoke como se demostró anteriormente. ¡Esa es la forma como es! –

Respuesta

2

Esto es exactamente lo que tiene que ver con pinvoke.net :)

Véase el SystemParametersInfo page para una descripción completa y código de ejemplo. Tenga en cuenta que tiene que usar pinvoke para tratar con esta API, hasta donde yo sé.

¡Salud!

EDIT: En caso de que no es inmediatamente obvio, la información para SPI_GETACCESSTIMEOUT se puede encontrar en la SPI page (que está enlazada desde la página SystemParametersInfo). También hay otra muestra here.

Cuestiones relacionadas