2013-07-28 32 views
7

próbowałem:Nie można importować USER32.DLL w Visual Studio

  • Aby dodać user32.dll z Reference Manager i importowane go z Windows \ system32 \ user32.dll, Otrzymałem komunikat o błędzie :

    Nie można dodać odwołania do pliku "C: \ Windows \ System32 \ user32.dll". Upewnij się, że plik jest dostępny i że jest to poprawny komponent lub składnik COM.

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

  • Aby uruchomić Visual Studio jako Administrator

nic nie działa ... to idzie na nerwy Próbuję 2 godziny, aby zaimportować ten obchodzi .dll ...

+1

Jaki jest rzeczywisty cel dodając, że DLL? Wspominałeś o 'DllImport', który wyraźnie nie potrzebuje dodawania natywnej biblioteki DLL jako odniesienia ... –

+0

@RohitVats: To pytanie dotyczy bibliotek .NET lub COM DLL, a nie zwykłych bibliotek DLL Win32, takich jak' user32.dll'. – RichieHindle

Odpowiedz

7

Nie trzeba dodawać odniesienia do User32.dll. Jest częścią systemu Windows i może zostać zaimportowany do kodu bez dodawania odwołania. Robisz to za pomocą 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"); 
} 

Zobacz także:

+0

Dziękujemy! Nie zdawałem sobie sprawy/wiem, że metoda powinna być zdefiniowana (public static extern void SetWindowText (int hWnd, String text);) – jovanMeshkov

+0

Cóż, nie jest to metoda czysto, którą należy zdefiniować. Każda metoda, która odwoływać od 'musi user32.dll' być obecny w tym formacie: ' [System.Runtime.InteropServices.DllImport ("user32.dll")] '' public static extern void (); ' – jrbeverly

1

To nie jest biblioteka .NET dll. Nie "dodajesz odwołania" w taki sam sposób, jak w bibliotekach .NET. Zamiast tego musisz dodać kod P/Invoke do swojej aplikacji, aby wywołać wybrane funkcje. Oto dobry zasób do nauki pinvoke: http://pinvoke.net/