salve, premetto che da poco mi sto cimentando con visual studio.
In particolare ho l'esigenza di aprire alcuni file da una finestra con dei pulsanti.
Per fare ciò ho creato un modulo con questo codice:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_NORMAL = 1
Public Sub ExecFile(ByVal fileName As String)
Dim ret As Long
ret = ShellExecute(0, "open", fileName, "", "", SW_NORMAL)
If ret <= 32 Then
Err.Raise(51, "ExecFile", "Impossibile eseguire il file """ & fileName & """." & vbCrLf & "Codice di errore di ShellExecute: " & LTrim(CStr(ret)) + ".")
End If
End Sub
e sull' evento click del mio pulsante ho chiamato la procedura Execfile passando il percorso del file da aprire.
E qui viene il bello.
Se effettuo il debug non mi da nessun errore, ne tantomeno, quando compilo il progetto, ma nel momento in cui lo eseguo mi restituisce un errore sulla funzione ShellExecute:
PInvokeStackImabalance
Una chiamata alla funzione PInvoke 'AVVIO_APP_ACCESS!AVVIO_APP_ACCESS.openfile::Shell Execute' ha sbilanciato lo stack. Questo problema può verificarsi quando la firma PInvoke gestita non corrisponde alla firma di destinazione non gestita. Verificare che la convenzione di chiamata e i parametri della firma PInvoke corrispondano alla firma di destinazione non gestita.
E' tutto il giorno che provo ma nulla.
Un aiutino è ben accetto...