begin process at 2012 02 12 23:50:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > RÉCUPÉRATION DES ARGUMENTS D'UN ÉXÉCUTABLE LANCÉ EN LIGNE DE COMMANDE

RÉCUPÉRATION DES ARGUMENTS D'UN ÉXÉCUTABLE LANCÉ EN LIGNE DE COMMANDE


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Niveau :Débutant Date de création :21/05/2003 Date de mise à jour :21/05/2003 11:35:36 Vu / téléchargé :4 277 / 281

Auteur : facdaar

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

D'accord, la fonction Command() renvoie l'ensemble des paramètres, encore faut-il les interprétés. Le code proposé se résume à une fonction qui vous remplit un tableau de string avec un paramètre par élément du tableau. Moi je l'utilise pour un programme lancé par un item du menu qui est déclenché par le bouton droit de la souris dans l'explorateur de fichier.
L'utilisateur sélectionne n fichiers, puis les envoie à mon application par bouton droit, MonAppli.

Source

  • Attribute VB_Name = "MainModule"
  • Option Explicit
  • ' Le projet doit démarrer sur SubMain (Options du projet)
  • Private Sub Main()
  • Dim SaveTitle As String
  • ' Vérifie qu'une autre instance du programme n'est pas déjà en cours...
  • If App.PrevInstance Then
  • SaveTitle = App.Title
  • AppActivate SaveTitle
  • End
  • End If
  • ' Récupère les paramètres de la ligne de commande
  • Dim strArgArray() As String
  • Dim intNbArgs As Integer
  • If GetCommandLine(strArgArray, intNbArgs) Then
  • ' Ici on dispose d'un tableau strArgArray contenant intNbArgs arguments
  • ' On peut afficher la feuille par Load Form1 puis Form1.Show
  • End If
  • End Sub
  • Private Function GetCommandLine( _
  • ByRef ArgArray() As String, _
  • ByRef NbArgs As Integer, _
  • Optional MaxArgs) As Boolean
  • Dim Char As String * 1
  • Dim CommandLine As String
  • Dim CommandLineLength, CharNumber As Integer
  • Dim InArg, InLongArg As Boolean
  • ' Contrôle si un nombre max d'arguments est précisé, sinon max=3
  • If IsMissing(MaxArgs) Then MaxArgs = 3
  • ' Récupère la ligne de commande
  • CommandLine = Command()
  • CommandLineLength = Len(CommandLine)
  • ' Trouve les arguments un par un
  • NbArgs = 0
  • For CharNumber = 1 To CommandLineLength
  • Char = Mid(CommandLine, CharNumber, 1)
  • ' Vérifie s'il y a des guillemets dans les arguments (pour les noms de fichier long, par exemple
  • If Char = """" Then InLongArg = True
  • If InLongArg Then
  • If Char = """" Then
  • If Not InArg Then
  • If NbArgs = MaxArgs Then Exit For
  • NbArgs = NbArgs + 1
  • ReDim Preserve ArgArray(1 To NbArgs) As String
  • InArg = True
  • Else
  • InArg = False
  • InLongArg = False
  • End If
  • Else
  • If InArg Then
  • ArgArray(NbArgs) = ArgArray(NbArgs) & Char
  • End If
  • End If
  • Else
  • If Char <> " " And Char <> vbTab Then
  • If Not InArg Then
  • If NbArgs = MaxArgs Then Exit For
  • NbArgs = NbArgs + 1
  • ReDim Preserve ArgArray(1 To NbArgs) As String
  • InArg = True
  • End If
  • ArgArray(NbArgs) = ArgArray(NbArgs) & Char
  • Else
  • InArg = False
  • End If
  • End If
  • Next CharNumber
  • GetCommandLine = (NbArgs > 0)
  • End Function
Attribute VB_Name = "MainModule"
Option Explicit

' Le projet doit démarrer sur SubMain (Options du projet)

Private Sub Main()
    Dim SaveTitle As String
    
    ' Vérifie qu'une autre instance du programme n'est pas déjà en cours...
    If App.PrevInstance Then
        SaveTitle = App.Title
        AppActivate SaveTitle
        End
    End If
    
    ' Récupère les paramètres de la ligne de commande
    Dim strArgArray() As String
    Dim intNbArgs As Integer

    If GetCommandLine(strArgArray, intNbArgs) Then
        ' Ici on dispose d'un tableau strArgArray contenant intNbArgs arguments
        ' On peut afficher la feuille par Load Form1 puis Form1.Show
    End If
End Sub

Private Function GetCommandLine( _
    ByRef ArgArray() As String, _
    ByRef NbArgs As Integer, _
    Optional MaxArgs) As Boolean
    
    Dim Char As String * 1
    Dim CommandLine As String
    Dim CommandLineLength, CharNumber As Integer
    Dim InArg, InLongArg As Boolean
    
    ' Contrôle si un nombre max d'arguments est précisé, sinon max=3
    If IsMissing(MaxArgs) Then MaxArgs = 3
    ' Récupère la ligne de commande
    CommandLine = Command()
    CommandLineLength = Len(CommandLine)
    ' Trouve les arguments un par un
    NbArgs = 0
    For CharNumber = 1 To CommandLineLength
        Char = Mid(CommandLine, CharNumber, 1)
        ' Vérifie s'il y a des guillemets dans les arguments (pour les noms de fichier long, par exemple
        If Char = """" Then InLongArg = True
        If InLongArg Then
            If Char = """" Then
                If Not InArg Then
                    If NbArgs = MaxArgs Then Exit For
                    NbArgs = NbArgs + 1
                    ReDim Preserve ArgArray(1 To NbArgs) As String
                    InArg = True
                Else
                    InArg = False
                    InLongArg = False
                End If
            Else
                If InArg Then
                    ArgArray(NbArgs) = ArgArray(NbArgs) & Char
                End If
            End If
        Else
            If Char <> " " And Char <> vbTab Then
                If Not InArg Then
                    If NbArgs = MaxArgs Then Exit For
                    NbArgs = NbArgs + 1
                    ReDim Preserve ArgArray(1 To NbArgs) As String
                    InArg = True
                End If
                ArgArray(NbArgs) = ArgArray(NbArgs) & Char
            Else
                InArg = False
            End If
        End If
    Next CharNumber
    GetCommandLine = (NbArgs > 0)
End Function


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip GESTION DE PILE FIFO DANS UNE CLASSE (SANS RECORDSET)
Source avec Zip SERVEUR TELNET (MULTI-CLIENTS)
LIRE ET ÉCRIRE DANS LA BASE DE REGISTRE FACILEMENT QUELQUESO...
Source avec Zip CRÉER ET LIRE UN FICHIER ZIP DANS VB

 Sources de la même categorie

Source avec Zip CALCULATRICE par TPB
Source avec Zip Source .NET (Dotnet) PIERRE PAPIER CISEAUX par Ultrabytes
Source avec Zip Source avec une capture UN PATCH EN VB (V3) par PhoenixBytes
Source avec Zip Source .NET (Dotnet) [VB.NET 2008] EXECUTION MULTITHREAD DE PLUSIEURS FONCTION À ... par ShadowTzu
Source avec Zip Source avec une capture MULTITHREADING ACTIVEX par Philippe734

Commentaires et avis

Commentaire de shaoni le 21/05/2003 11:38:34

tu pourrais gagner pas mal de lignes avec la fonction split !

Commentaire de Rabba le 20/10/2003 21:21:33

J'ai un ptit problème... Mon but est de créer des fichiers de sauvegarde avec une certaine extension contenant du texte et que lorsque je clique sur ce fichier mon programme s'ouvre et lit dans le fichier les info de sauvegarde... J'ai essayé ce code et ca me retourne le bon chemin d'accès, mais lorsque je veux faire un " open strTxtPath For input As #1" ca me génère une erreur... Pourriez-vous me contrer cette dernière? Merci d'avance...

Commentaire de facdaar le 22/10/2003 22:41:38

Pour commencer, je ne vois pas en effet pourquoi Open ne fonctionne pas. Peut-être je pourrais mieux comprendre si j'avais le vrai message d'erreur et ce que contient strTxtPath.

Ceci dit, j'ai qd même une remarque. Je pense qu'il serait mieux pour traiter un fichier texte d'utiliser l'objet FileSystemObject. Pour ce faire, il faut d'abord ajouter une référence au projet : la référence  Microsoft ScriptingRuntime Ensuite, onpeut faire comme ça :

Dim objFSO as Scripting.FileSystemObject
Dim objTS as Scriptint.TextStream

set objFSO=new FileSystemObject
set objTS=objFSO.OpenTextFile("c: est.txt",ForReading,false)
set objFSO=nothing

! Maintenant on peut lire le fichier ligne par ligne
Do while not objTS.AtEndOfStream
    sTxtLine = objTS.ReadLine()
Loop

Set objTS=nothing

Commentaire de Rabba le 29/10/2003 10:05:57

C'est bon, j'ai enfin trouvé le problème! Il y avait un espace avant le chemin comme par exemple: " C:monfichier.txt" Ce qui générait une belle erreur... Il suffit d'utiliser Trim() pour enlever les espace a gauche... Merci quand même pour votre aide!

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales