뚜껑을 닫을 때 취할 동작을 변경할 수있는 간단한 2 버튼 응용 프로그램 인 C#에서 아주 간단한 코드를 작성하고 싶습니다. "sleep"에서 "no action"으로, 그 반대의 경우도 마찬가지입니다..NET - 코드의 전원 옵션 설정
어떻게 든 WMI에 연결되어있는 것으로 나타났습니다. 그러나이를 달성하는 방법에 대한 실제 정보는 없습니다.
도움을 많이 주시면 감사하겠습니다.
감사합니다.
뚜껑을 닫을 때 취할 동작을 변경할 수있는 간단한 2 버튼 응용 프로그램 인 C#에서 아주 간단한 코드를 작성하고 싶습니다. "sleep"에서 "no action"으로, 그 반대의 경우도 마찬가지입니다..NET - 코드의 전원 옵션 설정
어떻게 든 WMI에 연결되어있는 것으로 나타났습니다. 그러나이를 달성하는 방법에 대한 실제 정보는 없습니다.
도움을 많이 주시면 감사하겠습니다.
감사합니다.
많은 Windows API에 대한 래퍼 인 Windows API Code Pack을 살펴보십시오. 여기에는 Power Management API이 포함됩니다.
이것은 정말로 오래된 게시물이지만 놀랍게도 그 답은 다른 곳에서는 찾기가 다소 어렵습니다. 여기 내 해결책은 전원 버튼을 제어하는 것이었다. 희망적으로 그것은 누군가를 돕는다. 다른 목적을 제공하지만,이 문서는 대단히 도움 : 여기
https://www.codeproject.com/Tips/490390/How-to-disable-the-Sleep-button-while-your-code-is
이 필요한 모든 수입이다. 타블렛 (제 경우)이 배터리로 작동하는지 여부에 따라 DC 및 AC 값 색인이 있음에 유의하십시오. 여기[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerWriteDCValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
int AcValueIndex);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerWriteACValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
int AcValueIndex);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerSetActiveScheme(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerGetActiveScheme(IntPtr UserPowerKey, out IntPtr ActivePolicyGuid);
static readonly Guid GUID_SYSTEM_BUTTON_SUBGROUP = new Guid("4f971e89-eebd-4455-a8de-9e59040e7347");
static readonly Guid GUID_POWERBUTTON = new Guid("7648efa3-dd9c-4e3e-b566-50f929386280");
static readonly Guid GUID_SLEEPBUTTON = new Guid("96996bc0-ad50-47ec-923b-6f41874dd9eb ");
그리고 당신이 그것을 설정하는 방법입니다 : 인덱스가 여기 있어요 https://msdn.microsoft.com/en-us/library/windows/hardware/mt608287(v=vs.85).aspx
정의
IntPtr pActiveSchemeGuid;
var hr = PowerGetActiveScheme(IntPtr.Zero, out pActiveSchemeGuid);
Guid activeSchemeGuid = (Guid)Marshal.PtrToStructure(pActiveSchemeGuid, typeof(Guid));
hr = PowerWriteDCValueIndex(
IntPtr.Zero,
activeSchemeGuid,
GUID_SYSTEM_BUTTON_SUBGROUP,
GUID_POWERBUTTON,
0);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid); //This is necessary to apply the current scheme.
. 일부 오류 보호 기능을 통합해야하지만 훌륭하게 작동합니다.
정말 멋지 네요! 감사 – Roman