2016-03-28 12 views
0

Bilgisayarda öncelik olarak çalışmak istediğim bir dijital işaretleme uygulamasına sahibim. Bunu önlemek için şimdi win32 olaylarına (ES_DISPLAY_REQUIRED) bağladım. Ancak bu win32 çağrısından kurtulmak istiyorum çünkü bence uygulama için haklarını yükselten bir yönetici olarak çalıştırılması gerekiyor.Pencerelerimin ekran koruyucu göstermesini veya uygulamadan güç almasını nasıl önleyebilirim?

Aynı şeyi yönetmenin bir yolu var mı? Yani, bir film izlerken medya oynatıcı vb uyku/ekran koruyucu önlemek için ne yapıyor?

cevap

0

Böyle SetThreadExecutionState işlevini kullanmayı deneyebilirsiniz:

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
public static extern uint SetThreadExecutionState(uint esFlags); 
public const uint ES_CONTINUOUS = 0x80000000; 
public const uint ES_SYSTEM_REQUIRED = 0x00000001; 
public const uint ES_AWAYMODE_REQUIRED = 0x00000040; 

public void AllowStandbyMode(bool allow) 
{ 
    if (allow) 
    { 
     // Set state back to normal 
     SetThreadExecutionState(ES_CONTINUOUS); 
    } 
    else 
    { 
     // Try this for vista, it will fail on XP 
     if (SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED) == 0) 
     { 
      // Try XP variant as well just to make sure 
      SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED); 
     }  
    } 
} 
İlgili konular