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

VB 6 et antérieur Discussion :

Ajouter une application au menu contextuel windows et récupérer les fichiers selectionnés


Sujet :

VB 6 et antérieur

  1. #41
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    J'ai fini la partie d'ajout/suppression de la base de registre, ensuite j'ai procédé à faire la partie de lien DDE pour envoyé le nom des fichiers/dossiers selectionnés à mon application et les ajoutés à mes listboxes là bas...Mais là je rencontre un probleme que j'arrive pas à résoudre ...
    Ce que je fais c'est que je selectionne les fichiers ou dossier dans le Windows Explorer, je fais click droit et je choisi OUVRIR AVEC MON APPLI (lien que j'ai ajouté dans la BASE DE REGISTRE...)...
    Le probleme selon ce que j'ai remarqué est quand j'ai plusieurs fichiers selectionnés (plus que 10 par expl), le programme ajoute le nom de quelques fichiers selectionnés à la liste comme prévu mais soudainnement il m'affiche ce message d'erreur pour toutes les instances qui restances ..... Ainsi je fini par un grand nombre de message d'erreur qui est le meme qui ce répète n fois(nombre d'instances - nombre de fichiers que j'ai réussi à afficher dans la listebox)
    quelqu'un peut aider à régler ce probleme ?



    ---------------------------
    Programme061209
    ---------------------------
    Run-time error '285':


    Foreign application won't perform DDE method or operation
    ---------------------------
    OK
    ---------------------------





    Code vb : 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
    Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
     'si la commande shell contient comme second parametre un f c'est qu'on a fait clique droit sur un fichier
    'si elle contient un d c'est qu'on a fait un clique droit sur un dossier
     
    Dim sCmdStr() As String
     
     
    sCmdStr = Split(CmdStr$, "::::::::::")
     
     
    If sCmdStr(1) = "f" Then
    'Ajout d'un fichier
     
     
    If Not ExistantElement(lstFiles, sCmdStr(0)) Then
    lstFiles.AddItem (sCmdStr(0))
    LstShortFilesNames.AddItem (GetDirOrShortFileName(sCmdStr(0), "file"))
    End If
     
     
        Else
        'Ajouter les fichiers du dossier passé en paramètre
            If sCmdStr(1) = "d" Then
                Dim FolderFiles() As String
                If frmOptions.chkSelSubFolders.Value = 1 Then
                        FolderFiles = ListFiles(sCmdStr(0), True)
                             Else
                        FolderFiles = ListFiles(sCmdStr(0), False)
                End If
     
                For i = 0 To UBound(FolderFiles)
     
     
                    If Not ExistantElement(lstFiles, FolderFiles(i)) And FolderFiles(i) <> "" Then
     
                         lstFiles.AddItem (FolderFiles(i))
                         LstShortFilesNames.AddItem (GetDirOrShortFileName(FolderFiles(i), "file"))
     
                    End If
     
                Next i
     
     
            End If
     
    End If
     
    'ajouter des scroll bar à la liste
    Call AddScrollBars("lstFiles")
    Call AddScrollBars("LstShortFilesNames")
     
     
      Cancel = 0
     
     
     
     
    End Sub


    Code vb : 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
    Private Sub Form_Load()
     
    If App.PrevInstance Then
       'Previous instance of App found
     
       If Command$ <> vbNullString Then
     
          'New commandLine parameters to send
          HiddenText.Text = Command$
          HiddenText.LinkMode = vbLinkNone
          HiddenText.LinkTopic = "Programme061209|DDELink"
          'specifié link topic
          HiddenText.LinkMode = vbLinkManual
          'initié le DDE LINK
          HiddenText.LinkExecute HiddenText.Text
          'ENVOIS DE DONNEES
          HiddenText.LinkMode = vbLinkNone
          'FERMETURE DU LIEN
        End If
       Unload Me
       'FERMER LA NOUVELLE INSTANCE
       Exit Sub
    End If
     
     
    'DDE POUR LA PREMIERE INSTANCE
     
     
    If Command$ <> vbNullString Then
     
     
    Dim sCommandLine() As String
     
    sCommandLine = Split(Command$, "::::::::::")
     
    If sCommandLine(1) = "f" Then
    'on ajoute un fichier
     
    If Not ExistantElement(lstFiles, sCommandLine(0)) Then
    lstFiles.AddItem (sCommandLine(0))
    LstShortFilesNames.AddItem (GetDirOrShortFileName(sCommandLine(0), "file"))
    End If
     
     
        Else '
        'AJOUTER LES FICHIERS D UN DOSSIER
            If sCommandLine(1) = "d" Then
                Dim FolderFiles() As String
                If frmOptions.chkSelSubFolders.Value = 1 Then
                        FolderFiles = ListFiles(sCommandLine(0), True)
                             Else '
                        FolderFiles = ListFiles(sCommandLine(0), False)
                End If '
     
                For i = 0 To UBound(FolderFiles)
     
     
                    If Not ExistantElement(lstFiles, FolderFiles(i)) And FolderFiles(i) <> "" Then
     
                         lstFiles.AddItem (FolderFiles(i))
                         LstShortFilesNames.AddItem (GetDirOrShortFileName(FolderFiles(i), "file"))
     
                    End If
     
                Next i
     
     
            End If '
     
    End If '
     
     
     
     
    Call AddScrollBars("lstFiles")
    Call AddScrollBars("LstShortFilesNames")
     
     
    End If '
     
     
    End Sub




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      'Ces trois fonctions fonctionnent parfaitement je les ai utilisé plusieurs fois ailleurs alors ça plante pas d'ici 
    
     ' GetDirOrShortFileName == > retourne soit le nom d'un fichier soit le nom du dossier, à partir d'un chemin complet
    ' ExistantElement == > fonction pour savoir si un element existe ou pas dans une listbox
    'ListFiles == > fonction qui retourne tout les fichiers inclu dans un dossier donné 

  2. #42
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Je pense que le probleme est du au fait que plusieurs requete DDE sont envoyé en meme temps, et que l'application d'origine n'a pas le temps ou la capacité de traiter toutes ces demandes..C'est pour ça que je me demande est ce qu'il y a moyen de dire à une instance d'attendre que l'instance précédente aie fini son travail avant que elle commence elle-meme à travailler c'est à dire envoyer le DDE etc....Je ne sais pas si elle est claire ma question, je vais essayer d'ouvrir un sujet propre à cette question pour ne pas tout mélanger

Discussions similaires

  1. Changer une fonctionnalité du menu contextuel Windows
    Par saad.hessane dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 29/08/2011, 10h04
  2. [OL-2007] ajouter une option au menu contextuel
    Par gregelec dans le forum Outlook
    Réponses: 0
    Dernier message: 27/07/2011, 19h23
  3. Réponses: 1
    Dernier message: 02/08/2007, 12h42
  4. Réponses: 8
    Dernier message: 16/03/2006, 07h36
  5. [Plugin] Ajouter une option au menu contextuel ?
    Par relivio dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 22/03/2004, 16h18

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