cs_iceman64b
Messages postés30Date d'inscriptionmardi 28 février 2006StatutMembreDernière intervention 5 mars 2013
-
16 oct. 2012 à 02:39
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
16 oct. 2012 à 21:38
Bonjour,
J'ai un petit problème avec une application simple que je suis en train de faire en vb.net
Voici ce que j'essai de faire : une application qui permettra à l'utilisateur de choisir un fichier .exe (exécutable). Ensuite l'utilisateur clique sur un bouton "analyser" et l'application lui retourne si l'application est 16 bits, 32 bits ou 64 bits.
Je crois que j'ai pas mal le bon code pour y arriver mais quand j'appel la fonction GetBinaryType et que je lui passe le nom du fichier en paramètre, il me sort une exception
System.AccessViolationException: Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
Je sollicites donc votre aide afin de résoudre le problème s.v.p.
'
Public Partial Class MainForm
Public Sub New()
' The Me.InitializeComponent call is required for Windows Forms designer support.
Me.InitializeComponent()
'
' TODO : Add constructor code after InitializeComponents
'
End Sub
Const SCS_32BIT_BINARY = 0
Const SCS_DOS_BINARY = 1
Const SCS_OS216_BINARY = 5
Const SCS_PIF_BINARY = 3
Const SCS_POSIX_BINARY = 4
Const SCS_WOW_BINARY = 2
Const SCS_64BIT_BINARY = 6
Private Declare Function GetBinaryType Lib "kernel32" Alias "GetBinaryTypeA" (ByVal lpApplicationName As String, lpBinaryType As Long) As Long
Public Sub AppliType()
Dim Ret As Long, sMsg As String
If GetBinaryType(textBox1.Text, Ret) <> 0 Then
sMsg = "The selected file is "
Select Case Ret
Case SCS_32BIT_BINARY
sMsg = sMsg + "a Win32-based application"
Case SCS_DOS_BINARY
sMsg = sMsg + "an MS-DOS \endash based application"
Case SCS_OS216_BINARY
sMsg = sMsg + "a 16-bit OS/2-based application"
Case SCS_PIF_BINARY
sMsg = sMsg + "a PIF file that executes an MS-DOS \endash based application"
Case SCS_POSIX_BINARY
sMsg = sMsg + "a POSIX \endash based application"
Case SCS_WOW_BINARY
sMsg = sMsg + "a 16-bit Windows-based application"
Case SCS_64BIT_BINARY
sMsg = sMsg + "a 64-bit Windows-based application"
End Select
Else
sMsg = "The selected file is not an executable!"
End If
textBox2.Text = sMsg
End Sub
Sub Button1Click(sender As Object, e As EventArgs)
openFileDialog1.ShowDialog()
textBox1.Text = openFileDialog1.FileName
End Sub
Sub Button2Click(sender As Object, e As EventArgs)
AppliType
End Sub
End Class
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 16 oct. 2012 à 08:29
Bonjour,
Tu as selon toute apparence "récolté" sur le web un bout de code écrit en VB6 et t'es contenté de le copier. !
Il t'appartient de le transposer en VB.Net.
En VB.Net, pour ton information, les Long sont des Integer.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
La déclaration de ta fonction GetBinaryType est étrange. Pour récupérer 'Ret' dans ton code (qui doit être un Integer), tu dois spécifier le mot clé ByRef.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 16 oct. 2012 à 21:38
Bonjour, bnana32,
A la place de iceman64b, je commencerais par m'intéresser de très près à ce source, déposé sur ce forum en 2008 :
Tapez le texte de l'url ici. j'y découvrirais la bonne déclaration de cette fonction, certes, mais, en l'analysant (et le comprenant), je saurais l'utiliser pour la finalité définie.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ