无法将 User32.dll 导入 Visual Studio
Posted
技术标签:
【中文标题】无法将 User32.dll 导入 Visual Studio【英文标题】:Can't import User32.dll into Visual Studio 【发布时间】:2013-07-28 13:16:43 【问题描述】:我试过了:
要从 Reference Manager 添加 user32.dll,并从 Windows\System32\user32.dll 导入它,我得到了 错误信息:
无法添加对“C:\Windows\System32\user32.dll”的引用。 请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。
using System.Runtime.InteropServices; [DllImport("user32")]
以管理员身份启动 Visual Studio
没有任何效果...这让我很紧张我正在尝试 2 个小时来导入这个该死的 .dll...
【问题讨论】:
您添加该 DLL 的实际目标是什么?您提到了DllImport
,它显然不需要添加本机 DLL 作为参考...
@RohitVats:这个问题涉及 .NET 或 COM DLL,而不是像 user32.dll
这样的普通 Win32 DLL。
【参考方案1】:
您不需要添加对 User32.dll 的引用。它是 Windows 的一部分,可以在您的代码中导入而无需添加引用。您可以使用 P/Invoke 执行此操作。
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void SetWindowText(int hWnd, String text);
private void button3_Click(object sender, EventArgs e)
IntPtr wHnd = this.Handle;//assuming you are in a C# form application
SetWindowText(wHnd.ToInt32(), "New Window Title");
另见:
Using P/Invoke from MSDN Calling API Functions【讨论】:
谢谢!我没有意识到/不知道应该定义该方法( public static extern void SetWindowText(int hWnd, String text); ) 嗯,需要定义的不是那种纯粹的方法。您从user32.dll
引用的每个方法都必须以该格式存在:[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void <METHODNAME>(<PARAMS>);
【参考方案2】:
它不是 .NET dll。您不会像使用 .NET dll 那样“添加引用”。相反,您必须将 P/Invoke 代码添加到您的应用程序以调用您想要的功能。这是学习 pinvoke 的好资源:http://pinvoke.net/
【讨论】:
以上是关于无法将 User32.dll 导入 Visual Studio的主要内容,如果未能解决你的问题,请参考以下文章
[DllImport("user32.dll")]这句代码是啥意思啊?没学过,解释下…
是否有从 USER32.DLL 导入所有内容的 C# 即用型类? [关闭]