using System; using System.Runtime.InteropServices; class Example { // Use DllImport to import the Win32 MessageBox function. [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); static void Main() { // Call the MessageBox function using platform invoke. MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0); } }至少要制定要导入的dll名称,可选字段:
- CharSet:制定字符集
- EntryPoint:制定入口点
入口点用于标识函数在 DLL 中的位置。 在托管对象中,目标函数的原名或序号入口点将 标识跨越交互操作边界的函数。 此外,您可以将入口点映射到一个不同的名称,这实际上是将函数重命名。
以下列出了重命名 DLL 函数的可能原因:
- 避免使用区分大小写的 API 函数名
- 符合现行的命名标准
- 提供采用不同数据类型的函数(通过声明同一 DLL 函数的多个版本)
- 简化对包含 ANSI 和 Unicode 版本的 API 的使用
using System.Runtime.InteropServices;
public class Win32 {
[DllImport("user32.dll", EntryPoint="MessageBoxA")]
public static extern int MsgBox(int hWnd, String text, String caption,
uint type);
}
No comments:
Post a Comment