Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Importare Funzione DLL Winapi
Forum - C# / VB.NET - [VB.NET] Importare Funzione DLL Winapi

Avatar
Neo1986 (Ex-Member)
Pro


Messaggi: 88
Iscritto: 21/06/2010

Segnala al moderatore
Postato alle 17:10
Giovedì, 10/03/2011
Ciao a tutti!

sono un pò in difficolta per l'importazione di questa funzione da una dll :

Codice sorgente - presumibilmente C# / VB.NET

  1. HANDLE WINAPI ISMM_Open(
  2. Void
  3. );



Subito pensavo fosse una dll scritta in C, allora ho fatto questa prova :

Codice sorgente - presumibilmente VB.NET

  1. <DllImport("ISMM.dll")> _
  2.     Public Shared Function ISMM_Open() As ULong
  3.     End Function



ma ovviamente non funziona perchè le funzioni successive richiedono l'handle del return della funzione ISMM_Open..... ed essendo sbagliato non lavorano.

Come si importa una dll winapi?

Grazie


Chiedere è lecito, rispondere è cortesia, rompere il caxxx è prassi!
PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
1
Down
V
Segnala al moderatore
Postato alle 19:39
Giovedì, 10/03/2011
Gli HANDLE del codice non gestito vengono marshallati in IntPtr nel codice gestito.

Quindi prova con:

Codice sorgente - presumibilmente VB.NET

  1. DllImport("ISMM.dll")> _
  2.     Public Shared Function ISMM_Open() As IntPtr
  3.     End Function



Ovviamente in tutte le funzioni che importi dovrai mettere IntPtr dove la firma nativa si aspetta un HANDLE.

Per una tabella riassuntiva del marshalling automaticamente fatto dal .net guarda qui: http://msdn.microsoft.com/en-us/library/ac7ay120.aspx

Marshallare... che bel neologismo XD - Il Totem - 11/03/11 10:10
Grazie mille, oltre ad avermi risolto questo dilemma, hai anche risolto 1 anno di imprecazioni per la conversione da un tipo ad un'altro, ancora grazie - Neo1986 - 11/03/11 10:31



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM