IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

"Convertir" un fichier.vbs en executable.exe


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut "Convertir" un fichier.vbs en executable.exe
    Salutations,

    Je viens de coder un patch via VisualBasic pour faire des modifications dans le Registre (Windows XP).

    Pour des raisons "culturelles", je souhaiterais fournir aux utilisateurs un .exe, comment puis je faire :

    1. pour linker un .exe sur mon .vbs
    2. pour éventuellement n'avoir qu'un .exe... (je pense à ca car en habitué des bundles apple, j'apprécie les "fichiers uniques..."

    Merci !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonsoir

    Tu ne peux pas faire d'un .vbs un .exe enfin pas à ma connaissance .

    Par contre tu peux réécrire ton code en Visual Basic 6 ou VB.net qui te fourniront un .exe en fin de compilation .

    VBS / VB6 / VB.net on apparemment une syntaxe assez proche ( VBS et VB6 j'en suis quasiment sur )

    J'ai également développé plusieurs script VBS que je voudrai transformer en exécutable .

    D'après ce que j'ai lu sur Wikipédia, VB6 ne dispose bientôt plus de support, et si je ne me trompe pas il ont fait évoluer VB sur la plateforme .NET -> VB.NET

    Je me permet d'insérer dans ton message une petite question qui je pense nous servira à tout les deux .

    Est il préférable de s'orienter sur VB6 ou VB.net ? Quels sont les avantages et les inconvénients de l'un et l'autre?

    Existe t il des IDE gratuit et performant pour développer dans ces langages ?

    Merci d'avance et désolé pour ce petit HS ttone.

    Bonne soirée.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Citation Envoyé par geek-59600 Voir le message
    Est il préférable de s'orienter sur VB6 ou VB.net ?
    Ne penses-tu pas avoir déjà répondu à cette question ?
    Citation Envoyé par geek-59600 Voir le message
    D'après ce que j'ai lu sur Wikipédia, VB6 ne dispose bientôt plus de support, et si je ne me trompe pas il ont fait évoluer VB sur la plateforme .NET -> VB.NET

  4. #4
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Donc autant coder directement VB.Net, j'obtiendrai donc l'exécutable Win32 et hop là!

    Merci.

    Ps : mon cas concernant l'accés et la modif du registre, pas de clause particulière ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Tu devrais pouvoir facilement trouvé l'équivalent syntaxique en VB.net pour la manipulation de registre .

    Pour ma part j'ai appris le VBS un peu (beaucoup ) sur le tas, en regardant les codes des autres, en cherchant à les comprendre et à les réutiliser selon mes besoins, je tiens à remercier toutes les personnes qui ont contribué à la rédaction de la FAQ VBS qui m'a été d'une grande aide.

    Tu devrais rapidement réussir à t'y retrouver je pense .

    Je me permets une dernière question :

    Sachant que VB.net est la suite de VB6 les tutos VB6 sont t il portable sur plateforme .net ?

    Merci d'avance

    Bonne journée

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Sachant que VB.net est la suite de VB6 les tutos VB6 sont t il portable sur plateforme .net ?
    Non, Vb.Net c'est du .Net et non du VB6. Bref il s'appuie sur le framework, et il faut connaitre son contenu pour faire du .Net, alors que VB6 s'appuie sur d'autre composant, éléments, objets de Windows.
    Ce qui ne veut pas dire qu'en .Net on ne peut pas s'appuyer de nouveau sur ces éléments là.

    Ce débat pourrais vous intéresser :
    http://www.developpez.net/forums/d29...ipt/pense-vb6/

  7. #7
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Bonsoir, est ce que vous pourriez m'aider svp à passer ce code en VB.net ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     Option Explicit
     
     Dim lng As Long
     Dim Buff As Long
     
     Const HKEY_CLASSES_ROOT = &H80000000
     Const HKEY_CURRENT_USER = &H80000001
     Const HKEY_LOCAL_MACHINE = &H80000002
     Const HKEY_USERS = &H80000003
     Const HKEY_DYN_DATA = &H80000004
     
     Public Enum HCle
     HKeyLocalMachine = 0
     HKeyCurrentUser = 1
     HKeyClassesRoot = 2
     HKeyUsers = 3
     HKeyDynamicData = 4
     End Enum
     
     
     Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
     (ByVal HKey As Long, _
     ByVal lpSubKey As String) As Long
     
     
     Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
     (ByVal HKey As Long, _
     ByVal lpSubKey As String) As Long
     
     
     
     
     
     Public Function CreerCle(HK As HCle, Chemin As String) As Long
     RegCreateKey HKConvert(HK), Chemin, lng
     CreerCle = lng
     End Function
     
     Private Function HKConvert(HK As HCle) As Long
     If HK = 2 Then HKConvert = HKEY_CLASSES_ROOT
     If HK = 1 Then HKConvert = HKEY_CURRENT_USER
     If HK = 0 Then HKConvert = HKEY_LOCAL_MACHINE
     If HK = 3 Then HKConvert = HKEY_USERS
     If HK = 4 Then HKConvert = HKEY_DYN_DATA
     End Function
     
     Public Function SupprCle(HK As HCle, Chemin As String)
     RegDeleteKey HKConvert(HK), Chemin
     End Function
     
     Public Function DonnerValeur(HK As HCle, Chemin As String, Valeur As String, Donnee As String)
     RegCreateKey HKConvert(HK), Chemin, lng
     RegSetValueEx lng, Valeur, 0&, 1, Donnee, Len(Donnee) + 1
     End Function
     
     Public Function LireValeur(HK As HCle, Chemin As String, Valeur As String) As String
     Buff = 0
     Buff = RegCreateKey(HKConvert(HK), Chemin, lng)
     If Buff = 0 Then RegQueryValueEx lng, Valeur, 0&, 1, 0&, Buff
     If Buff < 2 Then
     LireValeur = ""
     Exit Function
     End If
     LireValeur = String(Buff + 1, " ")
     RegQueryValueEx lng, Valeur, 0&, 1, ByVal LireValeur, Buff
     LireValeur = Left(LireValeur, Buff - 1)
     End Function
     
     Public Function SupprValeur(HK As HCle, Chemin As String, Valeur As String)
     Buff = 0
     Buff = RegCreateKey(HKConvert(HK), Chemin, lng)
     If Buff = 0 Then RegDeleteValue lng, ByVal Valeur
     End Function
     
     
     Public Sub Run(Parametre As String)
     DonnerValeur HKeyLocalMachine, "Software\Microsoft\Windows\CurrentVersion\Run", App.Title, App.Path & "\" & App.EXEName & ".exe " & Parametre
     End Sub
     
     Public Function IsRun() As Boolean
     If LireValeur(HKeyLocalMachine, "Software\Microsoft\Windows\CurrentVersion\Run", App.Title) <> "" Then IsRun = True Else IsRun = False
     End Function
     
     Public Sub DelRun()
     SupprValeur HKeyLocalMachine, "Software\Microsoft\Windows\CurrentVersion\Run", App.Title
     End Sub 
     
     
     SupprValeur HKeyLocalMachine, "System\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}", john
    Il s'agit d'aller lire/écrire & donc possiblement supprimer/ajouter des clés registres.
    Je n'utilise en fait que la fonction "suppression" pour me débarasser d'une valeur ennuyeuse pour un périphérique audio :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SupprValeur HKeyLocalMachine, "System\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}", john
    (john, c'est pour le test, en fait il s'agit d'un Filter (sur l'Usb) )

    Je n'ai qu'une sobre forme dans mon projet .Net, pour 2 bouttons, mais je pourrais m'en passer.

    Pour revenir à l'ouverture de ce topic, c'est pour ce code que je chercdhais à faire un .exe.

    Merci pour votre aide, je surfe sur le C++, les technos Flash, etc. Mais là revenir au VB c'est bizarre...

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par ttone Voir le message
    Bonsoir, est ce que vous pourriez m'aider svp à passer ce code en VB.net ?
    On peut t'aider si tu dis ce qui te pose problème exactement, mais pas le faire à ta place...

    Tu peux t'inspirer de l'exemple dans la doc :
    http://msdn.microsoft.com/fr-fr/libr...gistrykey.aspx

  9. #9
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Merci Tomlev,

    Je veux simplement m'assurer de l'existence d'une clé registre et la supprimer.
    Et ce simplement en lancant un exécutable .exe

    J'ai trouvé les sources (cf mon précédent post) en VB6 il me semble,
    problème : pour ne pas perdre les utilisateur de ce suppresseur de clé, je souhaite obtenir un format exécutable 'classique' à leurs yeux.
    On m'a conseillé VB.Net...

    Seulement apparemment cen'est pas le même langage.

    Pouvez vous m'aider à distinguer Function de VB6, de ce qui se fait en VB.Net, car le debugger me jette là dessus.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Tu peux code en VB.NET avec le style VB6, mais à mon avis c'est dommage... par exemple, en .NET tu n'as pas besoin de faire appel à des fonctions natives comme RegDeleteKey, il y a tout ce qu'il faut dans la classe RegistryKey.

    Regarde le lien que je t'ai donné, tu devrais y trouver toutes les infos nécessaires

  11. #11
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Merci!

    Heu... j'ai une ultime question :
    quel est le choix de projet le plus judicieux dans mon cas (cas simpliste pour du .Net je pense) ?

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    ça dépend...
    à priori Windows Forms (ou WPF) s'il doit y avoir une interaction avec l'utilisateur, ou console.

  13. #13
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Avant de poster, as-tu cherché dans les cours, la FAQ, le forum et sur Google ?
    Pour cette fois non j'avoue, le petit moment de faiblesse avant le pont

  14. #14
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    A ta place je n'adapterais pas ce code. Je le réécrirais, cela irait plus vite à mon avis, surtout avec .net

  15. #15
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Est ce que vous pourriez me dire comment vérifier l'existence de myValue avant de tenter une suppression ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim myKey As RegistryKey
            myKey = Registry.LocalMachine.OpenSubKey("SYSTEM")
            myKey.DeleteValue("myValue")
            UsbDevicesKey.Close()
    Mercu

  16. #16
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    ça sert à rien de vérifier si elle existe avant de la supprimer, du moins quand tu appelles juste DeleteValue(String) : si la valeur existe, elle sera supprimée. Si elle n'existe pas ... bah rien.
    Pour savoir si véritablement une valeur existe, tu es obligé de tout énumérer via key.GetValueNames()

  17. #17
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    si la valeur existe, elle sera supprimée. Si elle n'existe pas ... bah rien.
    ben justement non : par exemple, si je delete 2 fois de suite la même valeur, au deuxième coup j'ai un message d'erreur... Pas sexy

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not key.GetValue("myValue") Is Nothing Then
        myKey.DeleteValue("myValue")
    End If

  19. #19
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Mince ...
    donc le comportement que je décris doit être avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DeleteValue("LaValeur",false)
    Et d'ailleurs oui, j'ai inversé le fonctionnement des deux fonctions :
    Citation Envoyé par msdn
    name
    Type: System..::.String
    The name of the value to delete.

    throwOnMissingValue
    Type: System..::.Boolean
    Indicates whether an exception should be raised if the specified value cannot be found. If this argument is true and the specified value does not exist, then an exception is raised. If this argument is false and the specified value does not exist, then no action is taken

  20. #20
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Well, that's it, thks

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Fichier VBS qui execute une Procedure dans Access
    Par djodu69 dans le forum VBScript
    Réponses: 4
    Dernier message: 16/10/2008, 14h57
  2. [C#] Execution d'un fichier VBS depuis un service Windows
    Par 0r3L dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/11/2005, 23h58
  3. [exe] convertire un fichier java en executable?
    Par Toosek dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/01/2004, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo