wince应用程序(实现 获取存储设备的大小、实现 WINCE 系统重新启动、隐藏/显示 Windows 任务栏等等)【C#】

23 篇文章 0 订阅

[说明:部分代码来自网上 自己整理了下 与大家分享 代码有不足之处 请指出 我会修改滴]

废话小说,代码呈上..

【1. 总览函数体】

【2. 界面(简洁版)】

【3. 源码】

    /*******************************************************************
    * * 文件名: 实现wince上程序小应用程序
    * * Copyright (C) 2005-2012 *******xx公司研发部
    * 
    * * 相关文档编号:
    * 
    * * 创建人: lcb
    * 
    * * 日  期:2012-8-15
    * 
    * * 修改人:
    * 
    * * 日  期:
    * 
    * * 修改描述:
    * 
    ********************************************************************/
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace PDAapplication
{
    public partial class forApplicatinesMan : Form
    {
        public forApplicatinesMan()
        {
            InitializeComponent();
        }

       #region 获取存储设备的大小信息

        [DllImport("coredll.dll")]
        private static extern bool GetDiskFreeSpaceEx(string directoryName,ref long freeBytesAvailable, ref long totalBytes, ref long totaFreeBytes);    
        
        //变量声明
       static long freeBytes = 0, totalBytes = 0, totalFreeBytes = 0;
        //调用例子
      //参数 那个盘(一般是sd卡名称)/返回磁盘空间大小/xx
       bool bflag=  GetDiskFreeSpaceEx("\\Disk1",ref freeBytes, ref totalBytes,ref totalFreeBytes);
        //string strtotalBytes = "Nor Flash 磁盘空间大小为:"+totalBytes.ToString()+"Bytes";

        #endregion

       #region 可以实现 WINCE 系统重新启动

       [DllImport("Coredll.dll")]
       extern static int KernelIoControl(int dwIoControlCode, IntPtr lpInBuf, int nInBufSize, IntPtr
       lpOutBuf, int nOutBufSize, ref int lpBytesReturned);

       [DllImport("Coredll.dll")]
       extern static void SetCleanRebootFlag();



       /**************************************************
* 函 数 名:HardReset
* 功能描述:可以写成一个系统重启的函数
* 输入参数:无
* 输出参数:无
* 返 回 值: 无
* 作    者:lcb
* 日    期:2012-8-15
* 修 改 人:
* 日    期:
***************************************************/
       public void HardReset()
       {
           int IOCTL_HAL_REBOOT = 0x101003C;
           int bytesReturned = 0;
           SetCleanRebootFlag();
           KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, ref bytesReturned);
       }
       #endregion

       #region  隐藏/显示 Windows 任务栏

       [DllImport("coredll.dll", EntryPoint = "FindWindow")]
       public static extern int FindWindow(string lpWindowName, string lpClassName);

       [DllImport("coredll.dll", EntryPoint = "ShowWindow")]
       public static extern int ShowWindow(int hwnd, int nCmdShow);

       //显示窗口常量
       public const int SW_SHOW = 5;
       //隐藏窗口常量
       public const int SW_HIDE = 0;


       /**************************************************
* 函 数 名:btnxs_Click
* 功能描述:显示任务栏
* 输入参数:object sender 系统
        *   EventArgs e   系统
* 输出参数:无
* 返 回 值: 无
* 作    者:lcb
* 日    期:2012-8-15
* 修 改 人:
* 日    期:
***************************************************/
       private void btnxs_Click(object sender, EventArgs e)
       {
           int Hwnd = FindWindow("HHTaskBar", null);
           if (Hwnd != 0)
           {
               ShowWindow(Hwnd, SW_SHOW); //显示任务栏
               //显示按钮无效
               btnxs.Enabled = false;
               //隐藏按钮起作用
               btnyc.Enabled = true;
           }
       }

       /**************************************************
* 函 数 名:btnyc_Click
* 功能描述:隐藏任务栏
* 输入参数:object sender 系统
*           EventArgs e   系统
* 输出参数:无
* 返 回 值: 无
* 作    者:lcb
* 日    期:2012-8-15
* 修 改 人:
* 日    期:
***************************************************/
       private void btnyc_Click(object sender, EventArgs e)
       {
           int Hwnd = FindWindow("HHTaskBar", null);
           if (Hwnd != 0)
           {
               //隐藏任务栏
               ShowWindow(Hwnd, SW_HIDE);
               //显示按钮起作用
               btnxs.Enabled = true;
               //隐藏按钮无效
               btnyc.Enabled = false;
           }
       }
       #endregion

       #region 如何在 wince 上实现 GPRS 拨号上网

       [DllImport("coredll.dll")]
       public static extern uint RasDial(IntPtr dialExtensions, IntPtr phoneBookPath, IntPtr rasDialParam, uint NotifierType, IntPtr notifier, ref IntPtr pRasConn);
       [DllImport("coredll.dll")]
       public static extern uint RasHangUp(IntPtr pRasConn);
      

     //说明
     //拨号操作使用 RasDial(xx)函数 
     //挂断操作使用 RasHangUp(xx)函数
        //是对 RasDial 函数里面使用的参数 rasDialParam 的赋值过程,即将拨号连接名称、用户名、密码
       #endregion


       #region 如何获取 wince 系统内存情况

       [DllImport("coredll", EntryPoint = "GlobalMemoryStatus", SetLastError = false)]
       public static extern void GlobalMemoryStatusCE(out MemoryStatus msce);

       /**************************************************
* 函 数 名:btnnc_Click
* 功能描述:获取 wince 系统内存情况
* 输入参数:object sender 系统
*           EventArgs e   系统
* 输出参数:无
* 返 回 值: 无
* 作    者:lcb
* 日    期:2012-8-15
* 修 改 人:
* 日    期:
***************************************************/
       private void btnnc_Click(object sender, EventArgs e)
       {
           MemoryStatus m = new MemoryStatus();
           GlobalMemoryStatusCE(out m);
           double mm = ((m.dwAvailPhys / 1024.00) / 1024.00);
          labmsg.Text = mm.ToString();

       }

       public struct MemoryStatus
       {           
           //MEMORYSTATUS 结构的大小,在调 GlobalMemoryStatus 函数前用sizeof()函数求得
           public Int32 dwLength;         

           //返回一个介于 0~100 之间的值,用来指示当前系统内存的使用率
           public Int32 dwMemoryLoad;
           //返回总的物理内存大小,以字节(byte)为单位
           public Int32 dwTotalPhys;

           //返回可用的物理内存大小,以字节(byte)为单位
           public Int32 dwAvailPhys;

           //显示可以存在页面文件中的字节数。注意这个数值并不表示在页面文件在磁盘上的真实物理大小
           public Int32 dwTotalPageFile;

           //返回可用的页面文件大小,以字节(byte)为单位
           public Int32 dwAvailPageFile;

           //返回调用进程的用户模式部分的全部可用虚拟地址空间,以字节(byte)为单位
           public Int32 dwTotalVirtual;

           // 返回调用进程的用户模式部分的实际自由可用的虚拟地址空间,以字节(byte)为单位
           public Int32 dwAvailVirtual;
       }

       #endregion

       #region 如何获取当前应用程序完整路径
       String CodePath = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;
       #endregion
    }
}


更多方法在这个日志上:http://blog.csdn.net/li0531/article/details/7868633

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值