2013-07-28 150 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/

相關問題