一:获取存储设备的大小信息
很多底层操作的函数,Visual Studio 2005.NET 的API 库中并没有提供,这个时候,我
们就要在C#开发中调用Win32 的函数来进行相应的操作。一大批Win32 底层操作的函数
都存在于cordll.dll 动态链接库中。
调用Win32 的申明:
using System.Runtime.InteropServices;
在WinCE 下已经没有了驱动器名的概念,文件存储设备都是在WinCE 的根目录下中
以目录的形式出现,可以采用如下方法并调用相应函数来获取存储设备的总的大小和空闲空
间的信息:
[DllImport("coredll.dll")]
private static extern bool GetDiskFreeSpaceEx(string directoryName, ref long
freeBytesAvailable, ref long totalBytes, ref long totalFreeBytes);
调用例子如下:
long freeBytes = 0, totalBytes = 0, totalFreeBytes = 0;
GetDiskFreeSpaceEx("//Nor Flash", ref freeBytes, ref totalBytes, ref totalFreeBytes);
string strtotalBytes = "Nor Flash 磁盘空间大小为:"+totalBytes.ToString()+"Bytes";
二:重启系统函数
很多底层操作的函数,Visual Studio 2005.NET 的API 库中并没有提供,这个时候,我
们就要在C#开发中调用Win32 的函数来进行相应的操作。一大批Win32 底层操作的函数
都存在于cordll.dll 动态链接库中。
调用Win32 的申明:
using System.Runtime.InteropServices;
调用“cordll.dll”里的Win32 函数SetCleanRebootFlag( … )和KernelIoControl( … )
可以实现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();
可以写成一个系统重启的函数:
public void HardReset()
{
int IOCTL_HAL_REBOOT = 0x101003C;
int bytesReturned = 0;
SetCleanRebootFlag();
KernelIoControl(IOCTL_HAL_REBOOT,IntPtr.Zero,0, IntPtr.Zero, 0, ref bytesReturned);
}
然后在程序里需要重启的地方直接调用HardReset()这个函数即可。
三:隐藏/显示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; //隐藏窗口常量
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int Hwnd = FindWindow("HHTaskBar", null);
if (Hwnd != 0)
{
ShowWindow(Hwnd, SW_HIDE); //隐藏任务栏
button2.Enabled = true;
button1.Enabled = false;
}
}
private void button2_Click(object sender, EventArgs e)
{
int Hwnd = FindWindow("HHTaskBar", null);
if (Hwnd != 0)
{
ShowWindow(Hwnd, SW_SHOW); //显示任务栏
button1.Enabled = true;
button2.Enabled = false;
}
}