2010-03-11 20 views
6

C# adresinden SystemParametersInfo 'a aramak istiyorum. Bu işlevin ilk argümanı, belgelerde listelenen SPI_GETACCESSTIMEOUT gibi olası değerlerin büyük bir koleksiyonundan biridir, ancak herhangi bir yerde tanımlanmış gibi görünmemektedir.SystemParametersInfo parametre tanımları C#

Bu şeylerin gerçek değerlerini web'de bulabilirim ve içinde doğru sihirli sayılarla bir numara oluşturmaya çalışıyorum - bu işe yarar, ama bu doğru bir şey değil. Tüm bunları benim için yapan bir şeyi dahil etmek istiyorum. Bir yerlerde tanımlanmaları gerekiyor!

Bu işi düzgün yapmak için ne yapmalıyım? Benim kaynak koduna tüm bu kopyalamak istiyorsanız harika SPI page için


OJ puan. Fakat derleyicinin bunu yapmasını istiyorum.

şunu söylemek gerekir:

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

yerine ben eklemek gerekir:

public const uint SPI_GETACCESSTIMEOUT = 0x003C; 

... ve geri kalan her şey de. Tüm bu tanımları dll'de yaşadıkları yerden alabilecek bir komut arıyorum.

+0

Esasen sormak istediğin, SystemParametersInfo'nun yönetilen bir sürümüdür. Kısa cevap, bir tane yok (gönderme sırasında). Gösterildiği gibi p/invoke kullanmalısınız. Tek yolu bu! –

cevap

2

Bu pinvoke.net tüm yaklaşık :)

tam açıklaması ve örnek kod için SystemParametersInfo page bakın tam olarak ne olduğunu. Farkında olduğum kadarıyla bu API ile başa çıkmak için pinvoke kullanmanız gerektiğini unutmayın.

Şerefe!

DÜZENLEME: durumda bu kadar fark edilemeyen, SPI_GETACCESSTIMEOUT için bilgileri (SystemParametersInfo sayfasından bağlantılıdır) SPI page bulunabilir. Başka bir örnek here da var.