是否可以直接使用Microsoft.Win32命名空间中的Win32Native类

本文关键字:命名空间 Win32 Win32Native Microsoft 是否 | 更新日期: 2023-09-27 18:20:06

是否有任何方法可以直接使用Win32Native命名空间?

我想直接调用方法:

Win32Native.SendMessageTimeout(new IntPtr(0xffff), 0x1a, IntPtr.Zero, "Environment", 0, 0x3e8, IntPtr.Zero) == IntPtr.Zero;    

与声明相反:

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, uint fuFlags, uint uTimeout, IntPtr lpdwResult);

有可能吗?

是否可以直接使用Microsoft.Win32命名空间中的Win32Native类

我假设您指的是Microsoft.Win32.Win32Native类。不,你不能叫它,它是内部的。你可能会做一些反思的事情,但那会更丑陋。

微软可以随时更改API;通过新的框架版本、service pack等。由于它是内部的,即使他们做出的更改破坏了您的应用程序,如果您直接调用它,他们也没有义务支持它。

简而言之:编写自己调用的平台。

你还应该看看http://pinvoke.net/.此网站包含许多已为您定义的平台调用签名。