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é
Partager