[DllImport("coredll.dll", SetLastError=true)]
static extern int SetSystemPowerState(string psState, int StateFlags, int Options);
Declare Function SetSystemPowerState Lib "Coredll" ( _
ByVal psState As String, _
ByVal StateFlags As Integer, _
ByVal Options As Integer) As Integer
None.
Do you know one? Please contribute it!
May be more effective at forcing the device off than holding it on.
Conversion table Win32 to .NET
This is a very handy table when you want to convert C++ to C# .NET using P/Invoke
Windows Data Type | .NET Data Type |
BOOL, BOOLEAN | Boolean or Int32 |
BSTR | String |
BYTE | Byte |
CHAR | Char |
DOUBLE | Double |
DWORD/LPDWORD | Int32 or UInt32 |
FLOAT | Single |
HANDLE (and all other handle types, such as HFONT and HMENU) | IntPtr, UintPtr, or HandleRef |
HRESULT | Int32 or UInt32 |
INT | Int32 |
LANGID | Int16 or UInt16 |
LCID | Int32 or UInt32 |
LONG | Int32 |
LPARAM | IntPtr, UintPtr, or Object |
LPCSTR | String |
LPCTSTR | String |
LPCWSTR | String |
LPSTR | String or StringBuilder* |
LPTSTR | String or StringBuilder |
LPWSTR | String or StringBuilder |
LPVOID | IntPtr, UintPtr, or Object |
LRESULT | IntPtr |
SAFEARRAY | .NET array type |
SHORT | Int16 |
TCHAR | Char |
UCHAR | SByte |
UINT | Int32 or UInt32 |
ULONG | Int32 or UInt32 |
VARIANT | Object |
VARIANT_BOOL | Boolean |
WCHAR | Char |
WORD | Int16 or UInt16 |
WPARAM | IntPtr, UintPtr, or Object |
Const POWER_STATE_ON As Integer = &H10000
Const POWER_STATE_OFF As Integer = &H20000
Const POWER_STATE_SUSPEND As Integer = &H200000
Const POWER_FORCE As Integer = 4096
Const POWER_STATE_RESET as Integer = &H800000 'this wil make the device soft reset! :)
Public Sub ForcePower()
SetSystemPowerState(Nothing, POWER_STATE_ON, POWER_FORCE)
End Sub
Public Sub SoftReset()
SetSystemPowerState(Nothing, POWER_STATE_RESET, POWER_FORCE)
End Sub
const int POWER_STATE_ON = 0x00010000;
const int POWER_STATE_OFF = 0x00020000;
const int POWER_STATE_SUSPEND = 0x00200000;
const int POWER_FORCE = 4096;
const int POWER_STATE_RESET = 0x00800000;
public int ForcePower()
{
return SetSystemPowerState(null, POWER_STATE_ON, POWER_FORCE);
}
public int SoftReset()
{
// Though I guess this will never really return anything
return SetSystemPowerState(null, POWER_STATE_RESET, POWER_FORCE);
}