C#学习教程:使用C#以编程方式重启WindowsMobile6.x设备所以我想写一个小程序来做到这一点。是否可以使用C#以编程方式重新启动WindowsMobile6.x设备?您应该使用记录在案的ExitWindowsExAPI。IOCTL只能用于缺少ExitWindowsEx函数调用的平台(PocketPC2000、2002和2003)。有关详细信息,请参阅MSDN文档。[DllImport("aygshell.dll",SetLastError=""true"")][返回:MarshalAs(UnmanagedType.Bool)]staticexternboolExitWindowsEx([MarshalAs(UnmanagedType.U4)]uintdwFlags,[MarshalAs(UnmanagedType.U4))]uintdw保留);枚举ExitWindowsAction:uint{EWX_LOGOFF=0,EWX_SHUTDOWN=1,EWX_REBOOT=2,EWX_FORCE=4,EWX_POWEROFF=8}voidrebootDevice(){ExitWindowsEx(ExitWindowsAction.EWX_REBOOT,0);}SOFTRESET/HARDRESETpublicclassReboot{publicconstuintFILE_DEVICE_HAL=0x00000101;publicconstuintMETHOD_BUFFERED=0;publicconstuintFILE_ANY_ACCESS=0;publicstaticuintCTL_CODE(uintDeviceType,uintFunction,uintMethod,uintAccess){return((DeviceType///使CE设备软/热复位///publicstaticuintSoftReset(){uintbytesReturned=0;uintIOCTL_HAL_REBOOT=CTL_CODE(FILE_DEVICE_HAL,15,METHOD_BUFFERED,FILE_ANY_ACCESS);SetCleanRebootFlag();返回KernelIoControl(IOCTL_HAL_REBOOT,IntPtr.Zero,0,IntPtr.Zero,0,refbytesReturned);}[DllImport("coredll.dll")]publicexternstaticuintSetSystemPowerState(StringpsState,Int32StateFlags,Int32Options);常量整数POWER_FORCE=4096;constintPOWER_STATE_RESET=0x00800000;publicstaticuintColdReset(){SetCleanRebootFlag();返回SetSystemPowerState(null,POWER_STATE_RESET,POWER_FORCE);}[DllImport("Coredll.dll")]publicexternstaticintKernelIoControl(intdwIoControlCode,IntPtrlpInBuf,intnInBufSize,IntPtrlpOutBuf,intnOutBufSize,refintlpBytesReturned);[DllImport("Coredll.dll")]publicexternstaticvoidSetCleanRebootFlag();publicstaticvoidHardReset(){intIOCTL_HAL_REBOOT=0x101003C;intbytesReturned=0;SetCleanRebootFlag();KernelIoControl(IOCTL_HAL_REBOOT,IntPtr.Zero,0,IntPtr.Zero,0,refbytesReturned);}[DllImport("aygshell.dll",SetLastError=true)][返回:MarshalAs(UnmanagedType.Bool)]staticexternboolExitWindowsEx([MarshalAs(UnmanagedType.U4)]uintdwFlags,[MarshalAs(UnmanagedType.U4)]uintdwReserved);enumExitWindowsAction:uint{EWX_LOGOFF=0,EWX_SHUTDOWN=1,EWX_REBOOT=2,EWX_FORCE=4,EWX_POWEROFF=8}//voidrebootDevice(){ExitWindowsEx(ExitWindowsAction.EWX_REBOOT,0);我认为这会对你有所帮助:Hardresetwindowsmobile..但这种方法不是“清除c#代码”,因为它使用Interop,但它有效,所以它可以解决你的问题对于软复位:[DllImport("coredll.dll",SetLastError=true)]privatestaticexternboolKernelIoControl(intdwIoControlCode,byte[]inBuf,intinBufSize,byte[]outBuf,intoutBufSize,refintbytesReturned);私有结构FILE_DEVICE_HAL=0x00000101;私有结构uintMETHOD_BUFFERED=0;私有结构FILE_ANY_ACCESS=0;privatestaticuintCTL_CODE(uintDeviceType,uintFunction,uintMethod,uintAccess){return((设备我没用过这个方法..请到这里)以上是C#学习教程:UseC#toprogrammaticallyrestarttheWindowsMobile6.x设备分享全部内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表一个职位,如涉及侵权,请点击维权联系管理员删除,如需转载请注明出处:
