2013-07-28 2 views
7

Я попытался:Невозможно импортировать User32.dll в Visual Studio

  • Чтобы добавить user32.dll из Reference Manager и импортировать его из 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, а не простых DLL-библиотек Win32, таких как' user32.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

Спасибо! Я не знал/знал, что метод должен быть определен (public static extern void SetWindowText (int hWnd, String text);) – jovanMeshkov

+0

Ну, это не тот метод, который должен быть определен. Каждый метод, который вы ссылка из 'user32.dll' должен присутствовать в таком формате: ' [System.Runtime.InteropServices.DllImport ("User32.dll")] '' общественность статического ехЬегпа недействительных (); ' – jrbeverly

1

Это не .NET dll. Вы не добавляете ссылку так же, как с .NET dll. Вместо этого вам нужно добавить код P/Invoke в приложение, чтобы вызвать нужные функции. Вот хороший ресурс для обучения pinvoke: http://pinvoke.net/