Hallo,
Ik wil een map compleet verwijderen, dus incl submappen en files.
De applicatie opent ook processen op het formulier, zoals word en adobe enzo.
De map die ik wil verwijderen bevat dus word en/of adobe bestanden.
Dus de processen moeten eerst gesloten worden alvorens de delete actie kan worden aangeroepen.
Ik heb van alles geprobeerd en ik blijf een aantal fouten krijgen:
- het bestand kan niet worden verwijderd omdat het door een ander proces in gebruik is
- access to the path "..." denied
- toegang geweigerd ( na kill actie )
ik moet er nog bij zeggen dat het proces in een user control draait die op het formulier is geimplementeerd, vandaar die UcOpenApp1.
hieronder zal ik de code die ik nu nog heb even kopieeren:
Mijn gedachte hierbij is: ik sluit eerst proces dat nog runt, dan verwijder ik de bestanden en dan de volledige map.
Ik zit ook met het probleem dat de gebruiker meerdere processen kunnen openen, maar ik wil het eerst met 1 proces openen proberen.
Ik hoop dat iemand mij hierbij kan helpen
Ik wil een map compleet verwijderen, dus incl submappen en files.
De applicatie opent ook processen op het formulier, zoals word en adobe enzo.
De map die ik wil verwijderen bevat dus word en/of adobe bestanden.
Dus de processen moeten eerst gesloten worden alvorens de delete actie kan worden aangeroepen.
Ik heb van alles geprobeerd en ik blijf een aantal fouten krijgen:
- het bestand kan niet worden verwijderd omdat het door een ander proces in gebruik is
- access to the path "..." denied
- toegang geweigerd ( na kill actie )
ik moet er nog bij zeggen dat het proces in een user control draait die op het formulier is geimplementeerd, vandaar die UcOpenApp1.
hieronder zal ik de code die ik nu nog heb even kopieeren:
Visual Basic:
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
| Private Sub frmDocument_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If Not UcOpenApp1.p Is Nothing Then UcOpenApp1.p.Kill() End If Call AC_DeleteDirectory("C:\Temp\Mapnaam") End Sub Public Function AC_DeleteDirectory(ByVal dir_name As String) Dim file_name As String Dim files As Collection Dim i As Integer ' Get a list of files it contains. files = New Collection file_name = Dir$(dir_name & "\*.*", vbReadOnly + _ vbHidden + vbSystem + vbDirectory) Do While Len(file_name) > 0 If (file_name <> "..") And (file_name <> ".") Then files.Add(dir_name & "\" & file_name) End If file_name = Dir$() Loop ' Delete the files. For i = 1 To files.Count file_name = files(i) ' See if it is a directory. MsgBox(file_name) If GetAttr(file_name) And vbDirectory Then ' It is a directory. Delete it. AC_DeleteDirectory(file_name) Else IO.File.Delete(files(i)) End If Next i RmDir(dir_name) End Function |
Mijn gedachte hierbij is: ik sluit eerst proces dat nog runt, dan verwijder ik de bestanden en dan de volledige map.
Ik zit ook met het probleem dat de gebruiker meerdere processen kunnen openen, maar ik wil het eerst met 1 proces openen proberen.
Ik hoop dat iemand mij hierbij kan helpen
[ Voor 8% gewijzigd door Verwijderd op 13-11-2006 16:18 ]