c# wince重启代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace restart
{
    class Class1
    {
        [DllImport("coredll.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern int KernelIoControl(int dwIoControlCode, IntPtr lpInBuf, int nInBufSize, IntPtr lpOutBuf, int nOutBufSize, int lpBytesReturned);
        [DllImport("coredll.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern void SetCleanRebootFlag();
        [DllImport("coredll.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern void keybd_event(byte bVk, byte bScan, long dwFlags, long dwExtraInfo);
        //As Byte
        private const int KEYEVENTF_KEYUP = 2;
        private const int FILE_DEVICE_HAL = 0x101;
        private const int FILE_DEVICE_CONSOLE = 0x102;
        private const int FILE_DEVICE_PSL = 0x103;
        private const int METHOD_BUFFERED = 0;
        private const int METHOD_IN_DIRECT = 1;
        private const int METHOD_OUT_DIRECT = 2;
        private const int METHOD_NEITHER = 3;
        private const int FILE_ANY_ACCESS = 0;
        private const int FILE_READ_ACCESS = 0x1;
        private const int FILE_WRITE_ACCESS = 0x2;
        private static int CTL_CODE(int DeviceType, int func, int Method, int Access)
        {
            return (DeviceType << 16) | (Access << 14) | (func << 2) | Method;
        }
        //CTL_CODE
        public static void WarmBoot()
        {
            int bytesReturned = 0;
            int IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS);
            KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned);
        }
        public static void ColdBoot()
        {
            int bytesReturned = 0;
            int IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS);

            SetCleanRebootFlag();
            //JJJ

            KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned);
        }
        //TestProc

        public static void HardReset()
        {
            int IOCTL_HAL_REBOOT = 0x101003c;
            int bytesReturned = 0;
            SetCleanRebootFlag();
            //  KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned) ‘一般
            //  KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 4, IntPtr.Zero, 1024, bytesReturned)      ‘ 热启动
            KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 4, IntPtr.Zero, 1024, bytesReturned);
            // 冷启动
        }
        //HardReset

        public static void hardHibernate()
        {
            int IOCTL_HAL_SHUTDOWN = 0x1012000;
            //休眠
            int bytesReturned = 0;
            byte VK_OFF = 0xdf;
            KernelIoControl(IOCTL_HAL_SHUTDOWN, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned);
            //---按键的一个连续动作
            keybd_event(VK_OFF, 0, 0, 0);
            keybd_event(VK_OFF, 0, KEYEVENTF_KEYUP, 0);
            //---按键的一个连续动作
        }
    }
}

经本人测试,可用,都静态方法,直接调用就行。

时间: 2024-12-31 03:50:49

c# wince重启代码的相关文章

用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠

简介 本文讲述了用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠. 如何实现 首先,使用 using 语句添加我们需要的命名空间: using System.Diagnostics; using System.Runtime.InteropServices; 关机 代码如下: Process.Start("shutdown","/s /t 0");    // 参数 /s 的意思是要关闭计算机                            

解决NetBSD-1.0在VMware 11.0上重启时报指令错误的问题

NetBSD-1.0 在 VMware 11.0 上重启时,总是会提示如下的错误: 但是NetBSD-1.3 在 VMware 11.0 上重启的时候并没有提示这个问题,所以参照 NetBSD-1.3 的重启代码,修改 NetBSD-1.0 的重启方式. 1) arch/i386/isa/ic/i8042.h 头文件增加宏定义: #define KBC_PULSE0 0xfe /* pulse output bit 0 */ #define KBC_PULSE1 0xfd /* pulse ou

QT实现软件重启

//重启软件 void MainWindow::on_pushButton_UI_reboot_clicked() { //方式1 需要主函数中事件循环判断 //qApp->exit(773); //重启代码,773 = 'r'+'e'+'s'+'t'+'a'+'r'+'t' ==>restart //方式2 直接重启 #ifdef Q_OS_WIN qApp->closeAllWindows(); QProcess::startDetached(qApp->application

Lisp简明教程

此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程>ODT格式下载 具体的内容我已经编辑好了,想下载的朋友可以用上面的链接.本人水平有限,如有疏漏还望之处(要是有谁帮我排排版就好了)还望指出!资料虽然是我整理的,但都是网友的智慧,如果有人需要转载,请至少保留其中的“鸣谢”页(如果能有我就更好了:-)). Lisp简明教程 整理人:Chaobs 邮箱:[

【转载】Fragment 全解析(1):那些年踩过的坑

http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使用姿势3.Fragment之我的解决方案:Fragmentation 本篇主要介绍一些最常见的Fragment的坑以及官方Fragment库的那些自身的BUG,这些BUG在你深度使用时会遇到,比如Fragment嵌套时或者单Activity+多Fragment架构时遇到的坑.如果想看较为实用的技巧,

mac开机启动apache、memcached与mysql

一.开机自动启动apache方法 #sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist //开机启动 #sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist //关闭启动 二.开机自启动memcached方法 centos下设置开机自启动某个服务,只需要把启动服务对于的命令添加到/etc/rc.l

installshield学习笔记

看预定义常量的值:SprintfBox(INFORMATION,"","%d",变量值); 自定义常量:#define MAXCOUNT 1000;#define COMPAN_NAME "Example_Company"; 所有用prototype声明过的函数都必须在函数块中定义, 在预处理语句后面不带":"例如:#define,#include等等: 关键字program,endprogram和end和begin 获取c盘

Fragment全解析系列(一):那些年踩过的坑

Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使用姿势3.Fragment之我的解决方案:Fragmentation 本篇主要介绍一些最常见的Fragment的坑以及官方Fragment库的那些自身的BUG,这些BUG在你深度使用时会遇到,比如Fragment嵌套时或者单Activity+多Fragment架构时遇到的坑.如果想看较为实用的技巧,请直接看第二篇 Fragment是可以让你的app纵享丝滑的设计,如果你的a

VMWARE里启动kylin16.0时出现&#39;SMBus Host Controller not enabled&#39;(还未进入系统)

在Vmware里安装完Ubuntu16.10,启动时出现'SMBus Host Controller not enabled'错误提示,进不到图形界面.网上搜了一下,解决办法是在图形界面里进终端窗口,编辑blacklist.conf文件,禁止i2c_piix4驱动的加载.但现在系统还没加载完,进不去终端窗口,如何处理呢? 解决办法如下(亲测可用): 在虚拟机上运行Linux内核版本为4.7或以上的系统都在安装过程中或在启动时会因为加载intel_powerclamp驱动而导致崩溃.解决办法:1.