Code Snippet
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string dllName);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
static extern uint FormatMessage(uint dwFlags, IntPtr lpSource,
uint dwMessageId, uint dwLanguageId, [Out] StringBuilder lpBuffer,
uint nSize, IntPtr Arguments);
uint MAKELANGID(uint p, uint s)
{
return (s << 10) | p;
}
const uint LANG_JAPANESE = 0x11;
const uint SUBLANG_DEFAULT = 0x01; // user default
const int LANG_ENGLISH = 0x09;
const int SUBLANG_ENGLISH_US = 0x01;
const uint FORMAT_MESSAGE_FROM_HMODULE = 0x00000800;
const uint FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100;
const uint FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;
const uint FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;
const uint FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000;
private void button3_Click(object sender, EventArgs e)
{
string msiDLL = @"C:\Windows\system32\msimsg.dll";
IntPtr hMsiDLL = LoadLibrary(msiDLL);
StringBuilder message = new StringBuilder(512);
IntPtr lpMsgBuf = IntPtr.Zero;
FormatMessage(
FORMAT_MESSAGE_FROM_HMODULE,
hMsiDLL,
(uint)1033,
//0,
MAKELANGID(LANG_JAPANESE,SUBLANG_DEFAULT),
//MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
message,
(uint)message.Capacity,
IntPtr.Zero);
Console.WriteLine(message.ToString());
}