`
insertyou
  • 浏览: 858506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C#读取Win32标准DLL文件中的字符串资源

 
阅读更多

在C#中,通过Windows API函数读取标准的Win32 DLL文件中的字符串资源

下面的代码以读取 user32.dll 文件中的ID号为712的字符串资源。

如果代码运行正常的话,应该可以看到

/*

Other people are logged on to this remote computer. Shutting down Windows might cause them to lose data. Also, someone at the remote location will have to restart the computer manually.\r\n\r\nDo you want to continue shutting down?

如果是中文版的XP,此处的字符串则不同

*/

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;

namespace LoadLibrary
{
public static class Program
{
[DllImport("kernel32.dll", EntryPoint = "LoadLibraryA")]
public static extern IntPtr LoadLibrary(string sLibName);
[DllImport("kernel32.dll", EntryPoint = "FreeLibrary")]
public static extern int FreeLibrary(IntPtr hLib);
[DllImport("user32.dll", EntryPoint = "LoadStringW", CharSet = CharSet.Ansi)]
public static extern int LoadString(IntPtr hLib, uint resID, byte[] buf, int bufSize);

[STAThread]
static void Main(string[] args) {
IntPtr hDll = LoadLibrary("USER32.DLL");
if(hDll == IntPtr.Zero){
MessageBox.Show("Can't load library!");
return;
}
byte[] sb=new byte[1024];
int ret=0;
ret=LoadString(hDll,712,sb,1025);
if(ret == 0){
MessageBox.Show("String resource 712 is not found!");
FreeLibrary(hDll);
return;
}
MessageBox.Show("String Resource 100: " +Encoding.Unicode.GetString(sb).Replace("\0",""));
FreeLibrary(hDll);
return;
}
}

}

//运行环境:VS2008 (.NET2.0) 下通过

分享到:
评论

相关推荐

    C#调用C/C++DLL收取中文字符处理

     从DLL收读取字符串时遇到中文乱码,这里总结一下C#收取字符串时的处理。  C/C++字符串一般通过char* 或wchar_t*来表示,char*表示的是ANSCII字符串, wchar_t*表示Unicode字符串,Unicode字符串在C/C++中一个...

    C#连接Sybase数据库,并解决C#读取Sybase乱码的问题

    4,乱码问题:sybase使用latin1字符集的时候,c#中读取字符串会是乱码,进行如下转换就行: System.Text.Encoding.GetEncoding("gbk").GetString( System.Text.Encoding.GetEncoding("latin1").GetBytes( s );

    西门子S7协议,C#读写程序

    不需要组态,直接连接西门子,通过s7协议读写PLC,减少kepServer配置,直接读写PLC,项目刚用完的,c#直接可以使用。

    SQLite C# 多字符集支持

    SQLite C# 多字符集支持示例程序。 近期有个项目要对接海康道闸设备,海康用sqlite作为数据库存储。 海康储存文本是c++用gb2312...示例程序中提供的 System.Data.SQLite.dll 环境是 .Net framework 4.5,支持多字符集。

    C#调用C++DLL传递结构体数组的终极解决方案

    在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了。但是当传递的是结构体、结构体数组或者结构体指针的时候,就会发现C#上没有类型可以对应。这时怎么办,...

    C#抓取金蝶物料默认图片.zip

    特别说明: 1、需要在Helper\DapperK3文件中修改连接字符串 2、物料ID写死,根据实际情况自行修改. 3、需要先regsvr32 KDZIP.dll进行注册后才能使用. 4、烦请使用x86 CPU方式运行.

    C/C++,C#自动识别文件编码的dll,基于uchardet

    传入文件比如txt路径,返回编码字符串比如UTF-8、UTF-16、Shift_JIS等,有BOM的稳定识别,没BOM的文本文本量越大准确率越高(默认读取2048字节进行编码判断) uchardet开源库:https://code.google.com/p/uchardet/

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、...

    C#通过S7.NET读写西门子S7PLC(DB块).rar

    C#通过微软类库,S7.NET读写西门子Siemens S7(200,300,400,1200,1500)数据块实例代码。 方便开发人员轻松实现读写DB块的功能(具体读(写)哪个块,读(写)开始位置,读(写)长度,以参数形式传递,傻瓜式应用), 开发...

    明日科技C#开发入门及项目实战

    实例035 从字符串中分离文件路径、文件名及扩展名 实例036 对字符串进行加密与解密 实例037 开发一个进制转换器 实例038 将字符串的每个字符进行颠倒输出 实例039 根据标点符号对字符串进行分行 实例040 将汉字转换...

    C#公告类库

    1.ASP.NET类库 BarCodeToHTML.cs CacheHelper.cs Captcha.cs CNDate.cs ConvertJson.cs CsvHelper.cs EcanConvertToCh.cs Encrypt.cs ExcelHelper.cs FileDown.cs ...2.C#读取AD域里用户名或组 ...6.字符串加密

    C#微软培训资料

    C#语言在.NET 框架中的作用及其特性 1.1 Microsoft.NET 一场新的革命 1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出...

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    C#实现OPC UA客户端,并将数据存入SQL Server

    本源码借助了OpcUaHelper开源库,因此在使用时需要在NuGet中下载OpcUaHelper组件并引用,数据以字符串形式存入SQL Server,并以符号_隔开

    C#与西门子PLC通讯测试DOME.rar

    2.该程序采用.dll动态链接库方式,是最近几年才出来的一种与西门子plc通讯的方式,本人经过几个星期的测试,找到他的所有使用方法和注意事项,并开发了一个通用类库可以读取写入各种类型的数据,字符串,bool,16位...

    HtmlAgilityPack.dll C#解析Html

    用于解析html字符串,利用XPATH语法读取 格式化后的html

    C# 程序设计手册(WORD)

    在十六进制字符串和数字型别间转换 32 数组 34 将数组当做对象 35 一维数组 36 多维数组 36 不规则数组 37 在数组上使用 foreach 39 传递数组当做参数 40 使用 ref 和 out 传递数组 42 隐含型别数组 44 字符串 45 ...

Global site tag (gtag.js) - Google Analytics