[说明:部分代码来自网上 自己整理了下 与大家分享 代码有不足之处 请指出 我会修改滴]
废话小说,代码呈上..
【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