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) 下通过

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C 是一种编程语言,由贝尔实验室的丹尼斯·奇在20世纪70年代初发明。C 语言被广泛用于系统软件和应用软件的开发,尤其是在Unix操作系统的开发起着至关重要的作用。C 语言具有简洁、高效、灵活和可移植的特点,因此成为许多计算机科学教育课程的基础语言。 C 语言的语法结构简单直观,易于理解和学习。它提供了丰富的数据类型和控制结构,可以方便地进行算术操作、逻辑运算和流程控制。在 C 语言,可以通过函数来进行模块化编程,将程序拆分为多个函数来实现不同的功能,提高代码的可读性和可维护性。 C 语言具有高效的执行性能和充分的系统级编程支持。它可以直接访问内存和硬件,支持底层的操作系统接口和库函数。因此,C 语言非常适合用于开发操作系统、嵌入式系统和驱动程序等低层软件。C 语言也提供了丰富的标准库函数,包括输入输出、字符串处理、内存管理等功能,使得开发者可以方便地开发各种应用程序。 虽然 C 语言在编程过程需要开发者自己管理内存,但这也为程序的性能和资源利用提供了更大的灵活性和控制力。C 语言还具有很强的可移植性,几乎可以在所有的硬件平台和操作系统上编译和运行。因此,许多软件和系统都选择使用 C 语言进行开发。 总之,C 语言是一种强大而灵活的编程语言,具有高效、简洁、可移植和可扩展的特点,被广泛应用于各种领域的软件开发。无论是初学者还是有经验的开发者,学习和使用 C 语言都可以帮助他们更好地理解计算机底层原理,并开发出高质量的软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值