2013-07-28 101 views
7

我想:无法导入的User32.dll到Visual Studio

  • 参考经理添加user32.dll中,并从的Windows \ SYSTEM32 \ user32.dll中进口的,我得到了错误信息

    无法添加对“C:\ Windows \ System32 \ user32.dll”的引用。 请确保该文件是可访问的,并且它是有效的程序集或COM组件。

  • using System.Runtime.InteropServices; [DllImport("user32")]

  • 要启动Visual Studio中以管理员身份

没有什么工作......如此下去我的神经,我想2个小时导入这个该死的.dll ......

+1

什么是你加入该DLL的实际目标是什么?你已经提到'DllImport',它显然不需要添加原生DLL作为参考... –

+0

@RohitVats:这个问题涉及.NET或COM DLL,而不是像'user32.dll'这样普通的Win32 DLL。 – RichieHindle

回答

7

您不需要添加对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"); 
} 

另请参见:

+0

谢谢!我没有意识到/知道该方法应该被定义(公共静态外部无效SetWindowText(int hWnd,字符串文本);) – jovanMeshkov

+0

那么这不是纯粹需要定义的方法。您从'user32.dll'引用的每种方法都必须以下列格式存在: '[System.Runtime.InteropServices.DllImport(“user32.dll”)]' 'public static extern void );' – jrbeverly

1

这不是一个.NET DLL。您不像使用.NET dll一样“添加引用”。相反,您必须将P/Invoke代码添加到您的应用程序才能调用所需的功能。这里有一个很好的学习资源:http://pinvoke.net/

相关问题