我用[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
后写的程序在WIN XP的 平台下可以转,但当我把程序 烧到 Window CE 平台下后,就不行了,提示没有找到 kernel32,我想CE下可能没有这个dll,请问有办法解决这个问题吗 ???在C#有没有其他的类库可以来替代这个函数???谢谢好心的高手来替我解决。
PS:用的工具是VS2005,程序最后要在Window CE 运行.
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
后写的程序在WIN XP的 平台下可以转,但当我把程序 烧到 Window CE 平台下后,就不行了,提示没有找到 kernel32,我想CE下可能没有这个dll,请问有办法解决这个问题吗 ???在C#有没有其他的类库可以来替代这个函数???谢谢好心的高手来替我解决。
PS:用的工具是VS2005,程序最后要在Window CE 运行.
解决方案 »
- winfrom中用richTextBox写三角型我写出来在怎么全在一行
- 如何清理掉一个按钮Click事件的所有注册的方法
- Caspol配置安全策略
- while()循环什么时候退出的啊,
- 错误指示:使用了无效参数什么原因?
- C#需要调用C++编写的DLL,DLL中的一个函数的返回值是int*,请问在C#中应该怎么定义这个放回值的类型
- 如何改变控件的scrollbar的颜色或样式
- 如何在textBox中显示在数据库中查询到的多条数据
- 问一个把文本按照某种字体转换为图片的问题
- 问一下……(急需啵)
- C#--现在要使用c#安装那个版本编译工具比较好一些。已经安装过vc6的机器上安装c#有什么要注意的,要不要卸载以前安装的vs.
- DataGrid的一个显示小问题!~
32位系统都用注册表
.net CF的话,用XML
如果想用Windows Native API的话,应该用RegOpenKeyEx, RegSetValueEx, RegQueryValueEx
是改用注册表吗 ???,也不知道Window CE 注册表是怎么用的,先看看。谢谢了
http://blog.csdn.net/Knight94/archive/2006/03/28/640776.aspx
Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95. 没有列出任何版本的WINDOWS CE,不支持。
你可以自己实现一个读取配置文件的类,
或者借鉴《NB文章系统》中的实现也是可以的。
///////////////////////////Code Start
System.IO.StreamReader file =
new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
Console.WriteLine (line);
counter++;
}file.Close();
///////////////////////////////Code End
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
using System.Windows.Forms;namespace IniClass
{
/// <summary>
/// IniClass 的摘要说明。
/// </summary>
public class IniClass
{
/// <summary>
/// INI文件名
/// </summary>
//private string Path = Application.StartupPath + "\\Set.ini";
/// <summary>
/// 声明读写INI文件的API函数
/// 说明
/// 在初始化文件指定小节内设置一个字串
/// 返回值
/// Long,非零表示成功,零表示失败。
/// </summary>
/// 参数表
/// <param name="section" type="string">要在其中写入新字串的节点名称。</param>
/// <param name="key" type="string">要设置的项目名称。</param>
/// <param name="val" type="string">要设置的项目名称的值。</param>
/// <param name="filePath" type="string">ini文件所在的完整路径。</param>
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section,string key,string val,string filePath);
//private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
/// <summary>
/// 说明
/// 为初始化文件中指定的条目取得字串
/// 返回值
/// long,复制到 retVal 缓冲区的字节数量,其中不包括那些NULL中止字符。如 retVal 缓冲区不够大,
/// 不能容下全部信息,就返回nSize-1(若 section 或 key 为NULL,则返回 size-2)
/// </summary>
/// 参数表
/// <param name="section" type="string">欲在其中查找条目的小节名称。这个字串不区分大小写。如设为 Null,就在 retVal 缓冲区内装载这个ini文件所有小节的列表</param>
/// <param name="key" type="string">欲获取的项名或条目名。这个字串不区分大小写。如设为 Null,就在 retVal 缓冲区内装载指定小节所有项的列表</param>
/// <param name="def" type="string">指定的条目没有找到时返回的默认值。可设为空("")</param>
/// <param name="retVal" type="byte[]">指定一个字串缓冲区,长度至少为 size</param>
/// <param name="size" type="long">指定装载到 retVal 缓冲区的最大字符数量</param>
/// <param name="filePath" type="string">初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件</param>
/// 注解
/// 如 key 参数为 Null,那么 retVal 缓冲区会载入指定小节所有设置项的一个列表。每个项都用一个NULL字符分隔,最后一个项用两个NULL字符中止。
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def, byte[] retVal,int size,string filePath);
//private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
/* 写入ini文件(字符串)(String) */
public bool IniWriteValue(string Section,string Key,string Value,string Path)
{
return WritePrivateProfileString(Section,Key,Value,Path);
} /* 写入ini文件(整型)(int) */
public bool IniWriteValue(string Section,string Key,int Value,string Path)
{
return IniWriteValue(Section,Key,Value.ToString(),Path);
}
/* 写入ini文件(浮点型)(float) */
public bool IniWriteValue(string Section,string Key,float Value,string Path)
{
return IniWriteValue(Section,Key,Value.ToString(),Path);
} /* 写入ini文件(布尔型)(bool) */
public bool IniWriteValue(string Section,string Key,bool Value,string Path)
{
return IniWriteValue(Section,Key,Value.ToString(),Path);
} /* 读取INI文件(字符串)(String) */
public string IniReadValue(string Section,string Key,string Default,string Path)
{
Byte[] Buffer = new Byte[65535];
int bufferLen = GetPrivateProfileString(Section,Key,Default,Buffer,Buffer.GetUpperBound(0),Path);
string temp = Encoding.GetEncoding(0).GetString(Buffer);
temp = temp.Substring(0,bufferLen);
return temp.Trim();
} /* 读取INI文件(整型)(int) */
public int IniReadValue(string Section,string Key,int Default,string Path)
{
try
{
return Convert.ToInt32(IniReadValue(Section,Key,Default.ToString(),Path));
}
catch
{
return Default;
}
} /* 读取INI文件(浮点型)(float) */
public float IniReadValue(string Section,string Key,float Default,string Path)
{
try
{
return Convert.ToSingle(IniReadValue(Section,Key,Default.ToString(),Path));
}
catch
{
return Default;
}
} /* 读取INI文件(布尔型)(bool) */
public bool IniReadValue(string Section,string Key,bool Default,string Path)
{
try
{
return Convert.ToBoolean(IniReadValue(Section,Key,Default.ToString(),Path));
}
catch
{
return Default;
}
}
}
}
//调用
private void button2_Click(object sender, System.EventArgs e)
{
string path = Application.StartupPath + "\\Set.ini";
IniClass ini = new IniClass();
textBox4.Text = ini.IniReadValue(textBox1.Text,textBox2.Text,"没找到",path);
} private void button1_Click(object sender, System.EventArgs e)
{
string path = Application.StartupPath + "\\Set.ini";
IniClass ini = new IniClass();
ini.IniWriteValue(textBox1.Text,textBox2.Text,textBox3.Text,path);
}
iniFile = System.Configuration.ConfigurationSettings.AppSettings["IniFile "];