Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Cómo: Llamar a archivos DLL nativos desde el código administrado mediante PInvoke

Se puede llamar a las funciones que se implementan en archivos DLL no administrados desde código administrado utilizando la funcionalidad de invocación de plataforma (P/Invoke). Si el código fuente para el archivo DLL no está disponible, P/Invoke es la única opción para interoperar. Sin embargo, al contrario que en otros lenguajes de .NET, Visual C++ proporciona una alternativa a P/Invoke. Para obtener más información, vea Utilizar la interoperabilidad de C++ (PInvoke implícito).

El ejemplo de código siguiente utiliza la función GetSystemMetrics de Win32 para recuperar la resolución actual de la pantalla en píxeles.

Para funciones que utilizan sólo tipos intrínsecos como argumentos y valores devueltos, no se requiere ningún trabajo adicional. Otros tipos de datos, como punteros a función, matrices y estructuras, requieren atributos adicionales para garantizar un cálculo de referencias de datos apropiado.

Aunque no es necesario, sí que es aconsejable hacer declaraciones P/Invoke miembros estáticos de una clase de valor, de modo que no existan en el espacio de nombres global, como se muestra en este ejemplo.

// pinvoke_basic.cpp
// compile with: /clr
using namespace System;
using namespace System::Runtime::InteropServices;

value class Win32 {
public:
   [DllImport("User32.dll")]
   static int GetSystemMetrics(int);

   enum class SystemMetricIndex {
      // Same values as those defined in winuser.h.
      SM_CXSCREEN = 0,
      SM_CYSCREEN = 1
   };
};

int main() {
   int hRes = Win32::GetSystemMetrics( safe_cast<int>(Win32::SystemMetricIndex::SM_CXSCREEN) );
   int vRes = Win32::GetSystemMetrics( safe_cast<int>(Win32::SystemMetricIndex::SM_CYSCREEN) );
   Console::WriteLine("screen resolution: {0},{1}", hRes, vRes);
}

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft