Toon posts:

[VB] gebruikers naam

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Wat ik wil maken is een backup programma voor mezelf, waar ik aan kan geven welke bestanden en/of mappen.
Nou ja maken beter gezegd een beetje verbouwen want mijn kennis is minimaal en mijn engels bar slecht.

Ik heb deze code gedownload en en geript totdat ik enkel het gedeelte van de backup over heb.

Deze leek het meest in de buurt komen van de vele die bekeken heb.
Maar nu wil ik dus dat hij op alle pc`s te gebruiken is, hoe geef ik aan dat hij bijvoorbeeld. naar:
C:\Documents and Settings\Ric\Local Settings\Application Data
gaat als dat nu bij mij of bij jantje dus de username atuomatisch invullen.

Verschillende code en oplossingen geprobeerd maar op een of ander manier lukt het niet.
Een daarvan in het Nederlands is deze.
Wie heeft er tijd en zin om me hier in verder te helpen.
Zeg nogmaals de kennis is minimaal maar de inzet des te groter.
Met onze vriend Google vind ik duizenden linkjes maar die zijn niet specifiek voor mij.

Voor vele hier iets om met je ogen dicht te maken waarschijnlijk, maar voor mij is het een hele uitdaging om het aan het werk te krijgen.

Verwijderd

Met deze code kan je de verschillende folders uitlezen
(maak eerst een listbox List1 op je form)
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
   Dim WSo As Object
   Dim FSo As Object

   Set WSo = CreateObject("WScript.Shell")
   Set FSo = CreateObject("Scripting.FileSystemObject")

   Dim c1 As Integer
   Dim c2 As Integer
   
   ' System folders
   List1.AddItem "System Folders:"
   For c1 = 0 To 2
   List1.AddItem Str(c1) & ": " & FSo.getspecialfolder(c1)
   Next c1

   ' Program Files Folder
   List1.AddItem ""
   List1.AddItem "Program Files Folder:"
   List1.AddItem WSo.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\programfilesdir")

   ' Special folders
   List1.AddItem ""
   List1.AddItem "Special Folders:"
   c2 = WSo.SpecialFolders.Count
   For c1 = 0 To (c2 - 1)
      List1.AddItem Str(c1) & ": " & WSo.SpecialFolders(c1)
   Next c1

En om alleen een gedeelte van een foldernaam te gebruiken bijv. t/m je naam (C:\Documents and Settings\Ric) kan je de functies INSTR() en LEFT() of MID() gebruiken.

Verwijderd

Topicstarter
Bedankt voor je code zal eens kijken wat ik ermee kan aanvangen ;)

  • Equator
  • Registratie: April 2001
  • Laatst online: 18-05 16:54

Equator

Crew Council

🦺#Rodekruis #whisky #barista

Dit is ook een optie. Ervanuitgaande dat het allemaal engelse windowsversies zjin.
Wil je dit flexibel maken, dan zal je eerst zoals Remark ook doet uit het register de SpecialFolders moten uitlezen.

Visual Basic:
1
2
3
4
5
6
Option Explicit

Dim oNetwork, sDir
Set oNetwork = CreateObject("WScript.Network")

sDir = "C:\Documents and settings\" & oNetwork.UserName & "\"

Verwijderd

Topicstarter
CyberJ schreef op donderdag 16 december 2004 @ 12:32:
Dit is ook een optie. Ervanuitgaande dat het allemaal engelse windowsversies zjin.
|:( mijn engels is bar slecht :*) dus nee het zijn allemaal Nederlandse
Toch bedankt voor aandraging maar ben verlopig nog even met die van Remark aan het stoeien.

Daar krijg ik nu de folders in de listbox nu ben ik aan het kijken hoe ik alleen de folders die ik wil daar krijg en die dan vervolgens weer gekopieerd te krijgen naar een andere bestemming

Verwijderd

Die listbox is alleen voor het voorbeeld he, heb je in jouw programma niet nodig.
Als je bijv. alleen de folder naar je bureaublad wilt hebben heb je voldoende aan deze code:
En als je dan de foldernaam zonder Desktop wilt hebben haal je die tekst eraf met InStr en Mid. Voor een nl versie zoek je met Instr op "\Bureaublad"

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
   Dim WSo As Object
   Dim sTemp1 As String
   Dim sTemp2 As String
   
   Set WSo = CreateObject("WScript.Shell")
   sTemp1 = WSo.SpecialFolders(10)
   
   Dim iPos As Integer
   iPos = InStr(1, sTemp1, "\Desktop", vbTextCompare)
   sTemp2 = Mid(sTemp1, 1, iPos)
   MsgBox (sTemp1 & vbCrLf & sTemp2)

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 29-04 11:55
De gebruikersnaam achter de "Documents and settings" map gooien is geen goede manier. Als je je gebruikersnaam veranderd, blijft die map dezelfde naam houden, dus je vind geen map meer. Hetzelfde geld ook als je door de mappen in die map gaat zoeken of je de gebruikersnaam erin vind.
Onder de commandprompt heb je de Environment Variable "APPDATA" welke de correcte map bevat, misschien dat je deze in VB ook op de een of andere manier op kunt vragen?

  • JWolters
  • Registratie: Maart 2001
  • Laatst online: 18-05 19:46

JWolters

Killing Me Killing You

je kunt hier de code vinden om een 'Special Folder' te bepalen via een API-call. De folder die je zoekt is gedefinieerd als
Visual Basic:
1
Public Const CSIDL_LOCAL_APPDATA = &H1C

Als je de code copied and pasted krijg je de directory terug met deze aanroep:
Visual Basic:
1
fGetSpecialFolderLocation(CSIDL_LOCAL_APPDATA)

Time is my only fear, an enemy of Sand


  • martinr
  • Registratie: Augustus 2003
  • Laatst online: 12-12-2025
Vanuit Excel-VBA kan ik gewoon gebruiken: environ("USERPROFILE"), komt veel simpeler over toch ?

[ Voor 10% gewijzigd door martinr op 16-12-2004 14:52 ]


Verwijderd

Topicstarter
Twee daagjes verder maar kom er niet uit.

Ik heb nu een heel eenvoudig scripje in elkaar gezet:
code:
1
2
3
4
5
6
7
8
9
10
11
Private Sub Command1_Click()
  Dim fso, f
  Set fso = CreateObject("Scripting.FileSystemObject")
  On Error Resume Next
MsgBox ("Om problemen te verkomen zal eerst de (eventuwle bestaande) map backup worden verwijderd")
  Set f = fso.DeleteFolder("c:\backup")
 MsgBox ("Er wordt nu een backup gemaakt van je mappen en bestanden, dit kan even duren als hij klaar is met het kopieren van alle bestanden krijgt je een berichtje dus niet sluiten voordat je dat hebt gehad!")
  Set f = fso.CreateFolder("c:\backup")
  Set f = fso.CopyFolder("C:\Documents and Settings\Ric\Mijn documenten\Mijn afbeeldingen", "c:\backup\")
  MsgBox ("Alle bestanden zijn gekopieerd naar je C schijf in de map Backup")
End Sub


Maar hoe ik het moet fiksen om de gebruikers naam er tussen te krijgen??
Het script van Remark spreek me wel aan maar ik krijg alleen de message box
Wie wil me helpen om zonder toeters en bellen de naam er tussen te krijgen.
Ik denk dat ik die optie special folder los moet laten.

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 18-05 11:39
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Command1_Click()
  Dim fso, shell, MyPictures

  Set fso = CreateObject("Scripting.FileSystemObject")
  Set shell = WScript.CreateObject("WScript.Shell")

  if fso.folderexists("c:\backup") then
    MsgBox ("Om problemen te verkomen zal eerst de (eventuele bestaande) map backup worden verwijderd")
    fso.DeleteFolder("c:\backup")
  end if

  MsgBox ("Er wordt nu een backup gemaakt van je mappen en bestanden, dit kan " & _
  "even duren als hij klaar is met het kopieren van alle bestanden krijgt je een  " & _
  "berichtje dus niet sluiten voordat je dat hebt gehad!")

  MyPictures =  shell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\My Pictures")

  fso.CreateFolder("c:\backup")
  fso.CopyFolder(MyPictures, "c:\backup\")

  MsgBox ("Alle bestanden zijn gekopieerd naar je C schijf in de map Backup")
End Sub

[ Voor 10% gewijzigd door jvdmeer op 18-12-2004 22:46 ]


Verwijderd

Ik heb het volgende gedaan (met hulp van de site die JWolters gaf):

1. Maak een nieuwe module, kopieer alle code van deze site naar deze module.
2. Vervolgens kun je overal in je project bijv. het volgende doen:
Visual Basic:
1
2
3
Dim SpecialeMap as String
SpecialeMap = fGetSpecialFolderLocation(CSIDL_PERSONAL)
MsgBox SpecialeMap


Dit word dan in jou geval zoiets:
Visual Basic:
1
Set f = fso.CopyFolder(fGetSpecialFolderLocation(CSIDL_PERSONAL) & "\Mijn afbeeldingen", "c:\backup\")


Voor CSIDL_PERSONAL kun je ook andere waarden nemen, die zie je in de module (met een beschrijving)

[ Voor 36% gewijzigd door Verwijderd op 18-12-2004 23:07 ]


  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 17-02 19:31
vraagje, wat als een gebruiker besluit om z'n "mijn documenten" map te verhuizen?

dan hang je toch met je hardcoded paden?

Verwijderd

Maico ik heb hier wat code neergezet en hoewel het mooi is dat je zelf aan het programmeren
bent krijg ik het idee dat je een aantal basisdingen nog niet echt onder de knie hebt.
Daarom lijkt het me beter als je ook eens een boek of cursus over VB gaat raadplegen,
als je dan zoekt op MSDN, Planet Source Code e.d. begrijp je de gevonden code beter en dat
gaat je later veel tijd schelen.
En hoewel VB prima werkt kan je als je nu begint met programmeren misschien beter beginnen
met C# ofzo maar daar zijn hier met de search verschillende topics over te vinden.

jvdmeer was me al voor, maar hier nog wat extra code met mogelijkheid om te annuleren,
foutafhandelingsmogelijkheden e.d.


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
39
40
41
Option Explicit
Private Sub Form_Load()
   On Error GoTo ErrorHandler

   Dim WSo As Object
   Dim FSo As Object
   Dim sFromFolder As String
   Dim sToFolder As String
   Dim iResult As Integer

   Set WSo = CreateObject("WScript.Shell")
   Set FSo = CreateObject("Scripting.FileSystemObject")

   sFromFolder = WSo.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\My Pictures")
   sToFolder = "C:\Backup"

   
   If FSo.FolderExists(sToFolder) Then
      iResult = MsgBox("Om problemen te verkomen zal eerst de (eventuele bestaande) map " & sToFolder & " worden verwijderd", vbInformation + vbOKCancel, "Info")
      If iResult = vbCancel Then Exit Sub
      FSo.DeleteFolder (sToFolder)
   End If
   
   iResult = MsgBox("Er wordt nu een backup gemaakt van je mappen en bestanden, dit kan even duren als hij klaar is met het kopieren van alle bestanden krijgt je een berichtje dus niet sluiten voordat je dat hebt gehad!", vbInformation + vbOKCancel, "Info")
   If iResult = vbCancel Then Exit Sub
   
   FSo.CreateFolder (sToFolder)
   FSo.CopyFolder sFromFolder, sToFolder & "\"
   iResult = MsgBox("Alle bestanden zijn gekopieerd naar je " & Left(sToFolder, 2) & " schijf in de map " & Mid(sToFolder, 4, Len(sToFolder) - 3), vbInformation, "Info")

   Exit Sub

ErrorHandler:
   Select Case Err.Number
   Case 76
      ' path not found error negeren
   Case Else
      MsgBox (Err.Number & " :" & Err.Description)
   End Select
   Resume Next
End Sub


@komakeef: ik heb mijn standaard "Mijn documenten" map ook verplaatst naar c:\data en
dat wordt in je registry dan ook automatisch aangepast zodat de opgehaalde informatie met
regread nog steeds correct is.

  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 17-02 19:31
ja ok, maar het was meer een vraag richting maico, of hij door ook rekening mee gaat houden ;) Ik zag al wat voorbeelden voorbij komen met wat API calls. Heb zelf weinig kaas gegeten van VB, maar heb wel zelf lering mogen trekken uit hardcoded paden... dat dat nogal erg onhandig is als instellingen veranderen (zeker ook als het systeem wel de mogelijkheid geeft om die paden op juiste wijze te verkrijgen ;) )

m'n vraag was dus ook meer bedoeld als lichte hint van "gebruik geen hardcoded paden"

  • Haploid
  • Registratie: Maart 2002
  • Laatst online: 29-12-2021

Haploid

Doh!

Even geen visual basic bij de hand, maar kun je niet gewoon gebruik maken van %USERPROFILE%, een van die environment variables. Ik weet niet of alle file-functies die je wilt aanroepen het slikken, maar anders kun je gewoon lezen/schrijven uit:
%USERPROFILE%\Local Settings\Application Data

Hey, I came here to be drugged, electrocuted and probed, not insulted.


Verwijderd

Topicstarter
Bedankt voor de antwooorden.

Ik gebruikt de code van Remark die is voor een totaal leek als ik nog te begrijpen.

Remark, nee ik begin niet met progameren het is slechts voor vrienden, en kennisen waar ik de pc een beetje van onderhoud.

Gewoon een proggie dat alle belangrijke bestanden ff naar een veilige locatie kopieerd voordat ik de backup op een systeem ga terug zetten
Ik doe nu eigenlijk al precies hetzelfde maar dan alles met een *.bat file.
Het leek me gewoon leuk omzoiets nu in elkaar te zetten met VB.
Een cursus, boek...... op mijn leeftijd nog beginnen nee, :*) je bent nooit te oud om te leren maar ik kloot graag en het mag best wat tijd kosten.

In de loop van de week hoop ik als het nodig is nog eens van jullie hulp gebruik te mogen maken.

Verwijderd

Topicstarter
Hoi,

Ik ben nu zover dat ik alles gebackupt krijg op de manier die ik wens.
Nu wil ik gaan de backup files terug zetten en dan vraagt hij als ik de:
bla bla aan het register wil toevoegen

Ik gebruik het zo:

code:
1
[*]Shell "regedit" & Chr$(34) & "D:\Backup_Bestanden\Outlook_Express\Identities.reg" & Chr$(34), vbHide


het moet regedit /???? worden waarschijnlijk maar wat

[ Voor 8% gewijzigd door Verwijderd op 28-12-2004 17:35 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 28 december 2004 @ 17:35:
Hoi,

Ik ben nu zover dat ik alles gebackupt krijg op de manier die ik wens.
Nu wil ik gaan de backup files terug zetten en dan vraagt hij als ik de:
bla bla aan het register wil toevoegen

Ik gebruik het zo:

code:
1
[*]Shell "regedit" & Chr$(34) & "D:\Backup_Bestanden\Outlook_Express\Identities.reg" & Chr$(34), vbHide


het moet regedit /???? worden waarschijnlijk maar wat
Behalve dat shell natuurlijk een errug ranzige methode is om iets in het register te zetten (er zijn immers genoeg, goed gedocumenteerde, API's voor zie regXXX), zou je eens kunnen beginnen met zoeken naar regedit commandline op een willekeurige zoekmachine. Verder zie ik in 1 oogopslag dat je na regedit geen spatie shelled, waardoor je quotes dus meteen tegen regedit aan staan...

Wat heb je zelf al geprobeerd? Heb je de string die je shelled al eens geprint in je debug window ofzo en dat ge-copy/pasted in een command prompt?

Om eerlijk te zijn erger ik me al een tijdje aan dit topic. Het is niet de bedoeling in P&W dat we je handje vasthouden, maar dat je zelf je best doet iets uit te zoeken. Met copy/paste van anderen die het voor je voorkauwen, of het blind copy/pasten van een willekeurige website en dan maar hopen dat het werkt is alsof je met een kanon een mug probeert te raken...

Dan nog een laatste opmerking: Het shell object valt IMHO ook onder de noemer "kanon voor een mug" als je een register key wil lezen/schrijven of als je alleen een directory pad wil hebben.

Als je de userprofile directory wilt weten kun je dat heel simpel doen met behulp van Environ()
Visual Basic:
1
MsgBox Environ("USERPROFILE")

Of, (IMHO netter en "safer") met een API:
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
Option Explicit

Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Private Const CSIDL_PERSONAL = &H5
Private Const MAX_PATH = 260
Private Const NOERROR = 0

Private Type SHITEMID
    cb As Long
    abID As Byte
End Type

Private Type ITEMIDLIST
    mkid As SHITEMID
End Type

Private Sub Form_Load()
    MsgBox GetSpecialfolder(CSIDL_PERSONAL)
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
    Dim lResult As Long
    Dim IDL As ITEMIDLIST
    Dim strPath As String
    
    lResult = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If lResult = NOERROR Then
        strPath = Space$(512)
        lResult = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal strPath)
        GetSpecialfolder = Left$(strPath, InStr(strPath, Chr$(0)) - 1)
        Exit Function
    End If
    GetSpecialfolder = ""
End Function

Dat is wel wat meer code (die ik overigens van voorgenoemde site heb geplukt en effe kort her en der heb aangepast), maar tevens ook meer "versatile" als je andere folder locaties wil hebben (hence de constantes):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15


En als ik me niet vergis zijn er nog stukken meer...

Ik leun dan vaak al snel wat meer naar de API's dan 1 of ander objectje, maar in jouw geval kan het toch ook makkelijk zijn wél het shell object te gebruiken. Je gebruikt het immers ook voor het copy-en van je bestanden e.d. Zou je dat ook achtwerwege willen laten en het met de API willen oplossen dan is er op voorgenoemde site en op http://vbnet.mvps.org * meer dan genoeg over te vinden. Zie dan vooral http://vbnet.mvps.org/code/shell/ onder het kopje "Disk Routines" -> How to Copy or Move an Entire Directory using the API. Helaas is de Native ondersteuning van fileoperaties onder VB6 redelijk beperkt (FileCopy, Kill, Name en FileAttr en dan houdt 't al zo'n beetje op volgens mij zo uit de blote bol) dus moet je al snel terugvallen op API's en/of andere componenten die de API's op hun beurt weer voor je aanroepen (wrappers).

Nog een redelijk compleet voorbeeld voor het lezen en schrijven van de registry vind je o.a. hier, hier of hier.

Lijkt me dat je nu meer dan genoeg documentatie hebt om vooruit te kunnen :Y)

* nee, geen VB.NET (hoewel de naam het wel doet vermoeden) maar gewoon VB6

[ Voor 133% gewijzigd door RobIII op 29-12-2004 01:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Wat heb je zelf al geprobeerd? Heb je de string die je shelled al eens geprint in je debug window ofzo en dat ge-copy/pasted in een command prompt?

Om eerlijk te zijn irriteer ik me al een tijdje aan dit topic. Het is niet de bedoeling in P&W dat we je handje vasthouden, maar dat je zelf je best doet iets uit te zoeken. Met copy/paste van anderen die het voor je voorkauwen, of het blind copy/pasten van een willekeurige website en dan maar hopen dat het werkt is alsof je met een kanon een mug probeert te raken...
Wat ik geprobeerd heb waarschijnlijk de moeilijkste weg :)
De help van VB door lopen
En dan kom ik hier uit dat:
[code]
Saving and Restoring Keys

You can also import Registry keys to .reg files from a command prompt. Use the following format:

regedit /i filename.reg

– Or –

regedit /c filename.reg
[code/]
En verder als in een bat bestand import, zoals je waarschijnlijk ook wel gelezen hebt als je eigen al een tijdje aan dit topic iriteert is dat ik een kompleet leek ben en toch iets probeer te maken met behulp van wel willende mensen.

En als de metohde die ik gebruik ranzig wet ik niet voor mij alleen belangrijk als het maar werkt en ik hoef zoal eerder gezegd geen toeters en bellen.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 28 december 2004 @ 18:10:
[...]
En verder als in een bat bestand import, zoals je waarschijnlijk ook wel gelezen hebt als je eigen al een tijdje aan dit topic iriteert is dat ik een kompleet leek ben en toch iets probeer te maken met behulp van wel willende mensen.
Het "leek-zijn" is geen excuus om je vraag hier maar steeds te stellen. Ik maakte die opmerking alleen maar om je wat meer aan te sporen zelf te (leren) debuggen en uitzoeken waar het probleem zit. Ik mis in jouw posts in deze draad gewoon eigen initiatief (en dan loens ik ook nog even met een scheef oog naar deze draad). Begrijp me niet verkeerd, ik bedoel het niet lullig ofzo hoor. We zijn allemaal erg bereid je hier op weg te helpen, maar we verwachten ook wat moeite van jouw kant... :>
Verwijderd schreef op dinsdag 28 december 2004 @ 18:10:
En als de metohde die ik gebruik ranzig wet ik niet voor mij alleen belangrijk als het maar werkt en ik hoef zoal eerder gezegd geen toeters en bellen.
Zorg dan dat je eerst het verschil weet tussen toeters en bellen ;) :+

[ Voor 136% gewijzigd door RobIII op 28-12-2004 18:24 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Wat ik dan gedaan heb kun je zien HOOP ik dat ik niet alles voor gekouwd wi l krijgen

Opening
*********************
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Backup_CMD_Click(Index As Integer)
Load Backup
Backup.Show
End Sub

Private Sub Herstel_CMD_Click(Index As Integer)
Load Herstel
Herstel.Show
End Sub

Private Sub Image1_Click(Index As Integer)
Unload Me
End Sub


backuk from
*****************************
code:
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
Option Explicit

Private Sub chkFiles_Click(Index As Integer)
    Dim i
    For i = 0 To chkFiles.Count - 1
        If chkFiles(i).Value = vbChecked Then
            Command1.Enabled = False
            Exit Sub
        End If
    Next
    For i = 0 To chkFiles.Count - 1
        If chkFiles(i).Value = vbUnchecked Then
            Command1.Enabled = True
        End If
    Next
End Sub

Private Sub Command1_Click()
    Dim i As Control
    For Each i In Backup.Controls
        i.Enabled = False
    Next
    
    
    On Error Resume Next
    '*****************************************************
    '** Wat de muis icoon moet doen tijdens de opdracht **
    '*****************************************************
    Screen.MousePointer = vbHourglass
    
    '*********************************************************************************
    '** geef hier de variabels voor de mappen die gekopieerd/gemaakt moeten worden  **
    '*********************************************************************************
    
    Dim Backup_Bestanden, Outlook_Express, Ws_ftp, Serv_u, Emule, Winnc, Incredimail, Microsoft_office_outlook, oNetwork
    Dim van_map As String
    Dim naar_map As String
    
    '*****************************************
    '**Kijkt of D:\Backup_Bestanden bestaat **
    '*****************************************
    Set Backup_Bestanden = CreateObject("scripting.filesystemobject")
    If Not Backup_Bestanden.folderexists("D:\Backup_Bestanden") Then
        MkDir ("D:\Backup_Bestanden")
    End If

        '********************************************************
        '** Kijkt of Backup_Bestanden\Outlook_Express bestaat  **
        '********************************************************
        Set Outlook_Express = CreateObject("scripting.filesystemobject")
        If Not Outlook_Express.folderexists("D:\Backup_Bestanden\Outlook_Express") Then
            MkDir ("D:\Backup_Bestanden\Outlook_Express")
        End If
        
        '************************************************
        '** Kijkt of Backup_Bestanden\WS_FTP bestaat   **
        '************************************************
        Set Ws_ftp = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\WS_FTP") Then
            MkDir ("D:\Backup_Bestanden\WS_FTP")
        End If
        
        '************************************************
        '** Kijkt of Backup_Bestanden\Serv_U bestaat   **
        '************************************************
        Set Serv_u = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Serv_U") Then
        MkDir ("D:\Backup_Bestanden\Serv_U")
        End If
        
        '************************************************
        '** Kijkt of Backup_Bestanden\Emule bestaat   **
        '************************************************
        Set Emule = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Emule") Then
        MkDir ("D:\Backup_Bestanden\Emule")
        End If
        
        '************************************************
        '** Kijkt of Backup_Bestanden\Winnc bestaat   **
        '************************************************
        Set Winnc = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Winnc") Then
        MkDir ("D:\Backup_Bestanden\Winnc")
        End If
        
        '****************************************************
        '** Kijkt of Backup_Bestanden\Incredimail bestaat  **
        '****************************************************
        Set Incredimail = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Incredimail") Then
        MkDir ("D:\Backup_Bestanden\Incredimail")
        End If
        
        '*********************************************************
        '** Kijkt of Backup_Bestanden\Microsoft_office_outlook  **
        '*********************************************************
        Set Microsoft_office_outlook = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Microsoft_office_outlook") Then
        MkDir ("D:\Backup_Bestanden\Microsoft_office_outlook")
        End If

    '*******************
    '** Start BackUp  **
    '*******************
    Dim X, Wso
    Set X = CreateObject("scripting.filesystemobject")
    Set oNetwork = CreateObject("WScript.Network")
    Set Wso = CreateObject("WScript.Shell")
    
    
        '****************
        '** Favorieten **
        '****************
        van_map = Wso.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Favorites")
        naar_map = "D:\Backup_Bestanden"
        X.CopyFolder van_map, naar_map & "\"


        '******************************************
        '** Outlook Express Email adressen, enz. **
        '******************************************

        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Application Data\Microsoft\Address Book", "D:\Backup_Bestanden\Outlook_Express\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\Identities", "D:\Backup_Bestanden\Outlook_Express\")
        Shell "regedit -e " & Chr$(34) & "D:\Backup_Bestanden\Outlook_Express\Identities.reg" & Chr$(34) & " " & Chr$(34) & "HKEY_CURRENT_USER\Identities"


        '*******************************
        '** Microsoft-office Outlook  **
        '*******************************
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\Microsoft\Outlook", "D:\Backup_Bestanden\Microsoft_office_outlook\")

                
        '*****************
        '** Incredimail **
        '*****************
        Shell "regedit -e " & Chr$(34) & "D:\Backup_Bestanden\Incredimail\Incredimail.reg" & Chr$(34) & " " & Chr$(34) & "HKEY_CURRENT_USER\Software\incredimail"
        Shell "regedit -e " & Chr$(34) & "D:\Backup_Bestanden\Incredimail\Incredimail_1.reg" & Chr$(34) & " " & Chr$(34) & "HKEY_LOCAL_MACHINE\Software\incredimail"
        FileCopy "C:\Documents and Settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\content.ucd", "D:\Backup_Bestanden\Incredimail\content.ucd"
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Letter", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Image", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Skin", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Sound", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Ecard", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Animation", "D:\Backup_Bestanden\Incredimail\")
       
        
        '**************************
        '** Webshots Collecties  **
        '**************************
        van_map = X.CopyFolder("C:\Program Files\Webshots\Collections", "D:\Backup_Bestanden\")
 
        
        '**************************
        '** Server U Instelingen **
        '**************************
        FileCopy "C:\Program Files\Serv-U\SERV-U.INI", "D:\Backup_Bestanden\Serv_U\SERV-U.INI"

             
        '************************
        '** Ws_FTP Instelingen **
        '************************
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Application Data\Ipswitch\WS_FTP\Sites", "D:\Backup_Bestanden\WS_FTP")

        
        '***********************
        '** Emule Instelingen **
        '***********************
        van_map = X.CopyFolder("C:\Program Files\eMule\Config", "D:\Backup_Bestanden\Emule\")


        '************************
        '** Winnc Ftp accounts **
        '************************
        van_map = X.CopyFolder("C:\Program Files\WinNc", "D:\Backup_Bestanden\Winnc\")

    Screen.MousePointer = vbDefault
    For Each i In Backup.Controls
        i.Enabled = True
    Next
    Dim M
    For M = 0 To chkFiles.Count - 1
        chkFiles(i).Value = vbUnchecked
    Next
    Command1.SetFocus
End Sub


    Private Sub Command2_Click()
    Dim i As Control
    For Each i In Backup.Controls
        i.Enabled = False
    Next
    
    On Error Resume Next
    '*****************************************************
    '** Wat de muis icoon moet doen tijdens de opdracht **
    '*****************************************************
    Screen.MousePointer = vbHourglass
    
    '*********************************************************************************
    '** geef hier de variabels voor de mappen die gekopieerd/gemaakt moeten worden  **
    '*********************************************************************************
    
    Dim Backup_Bestanden, Outlook_Express, Ws_ftp, Serv_u, Emule, Winnc, Incredimail, Microsoft_office_outlook, oNetwork
    Dim van_map As String
    Dim naar_map As String
    
    '*****************************************
    '**Kijkt of D:\Backup_Bestanden bestaat **
    '*****************************************
    Set Backup_Bestanden = CreateObject("scripting.filesystemobject")
    If Not Backup_Bestanden.folderexists("D:\Backup_Bestanden") Then
        MkDir ("D:\Backup_Bestanden")
    End If

    '******************
    '** Start BackUp **
    '******************
    Dim X, Wso
    Set X = CreateObject("scripting.filesystemobject")
    Set oNetwork = CreateObject("WScript.Network")
    Set Wso = CreateObject("WScript.Shell")
    
    
        '****************
        '** Favorieten **
        '****************
        If chkFiles(0).Value = vbChecked Then
        van_map = Wso.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Favorites")
        naar_map = "D:\Backup_Bestanden"
        X.CopyFolder van_map, naar_map & "\"
        End If
        
        
        '******************************************
        '** Outlook Express Email adressen, enz. **
        '******************************************
        If chkFiles(1).Value = vbChecked Then
        '********************************************************
        '** Kijkt of Backup_Bestanden\Outlook_Express bestaat  **
        '********************************************************
        Set Outlook_Express = CreateObject("scripting.filesystemobject")
        If Not Outlook_Express.folderexists("D:\Backup_Bestanden\Outlook_Express") Then
            MkDir ("D:\Backup_Bestanden\Outlook_Express")
        End If
        
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Application Data\Microsoft\Address Book", "D:\Backup_Bestanden\Outlook_Express\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\Identities", "D:\Backup_Bestanden\Outlook_Express\")
        Shell "regedit -e " & Chr$(34) & "D:\Backup_Bestanden\Outlook_Express\Identities.reg" & Chr$(34) & " " & Chr$(34) & "HKEY_CURRENT_USER\Identities"
        End If
        
        
        '*******************************
        '** Microsoft-office Outlook  **
        '*******************************
        If chkFiles(2).Value = vbChecked Then
        '*********************************************************
        '** Kijkt of Backup_Bestanden\Microsoft_office_outlook  **
        '*********************************************************
        Set Microsoft_office_outlook = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Microsoft_office_outlook") Then
        MkDir ("D:\Backup_Bestanden\Microsoft_office_outlook")
        End If
        
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\Microsoft\Outlook", "D:\Backup_Bestanden\Microsoft_office_outlook\")
        End If
        
        
        '*****************
        '** Incredimail **
        '*****************
        If chkFiles(3).Value = vbChecked Then
        '****************************************************
        '** Kijkt of Backup_Bestanden\Incredimail bestaat  **
        '****************************************************
        Set Incredimail = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Incredimail") Then
        MkDir ("D:\Backup_Bestanden\Incredimail")
        End If
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        Shell "regedit -e " & Chr$(34) & "D:\Backup_Bestanden\Incredimail\Incredimail.reg" & Chr$(34) & " " & Chr$(34) & "HKEY_CURRENT_USER\Software\incredimail"
        Shell "regedit -e " & Chr$(34) & "D:\Backup_Bestanden\Incredimail\Incredimail_1.reg" & Chr$(34) & " " & Chr$(34) & "HKEY_LOCAL_MACHINE\Software\incredimail"
        FileCopy "C:\Documents and Settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\content.ucd", "D:\Backup_Bestanden\Incredimail\content.ucd"
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Letter", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Image", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Skin", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Sound", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Ecard", "D:\Backup_Bestanden\Incredimail\")
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Local Settings\Application Data\IM\Animation", "D:\Backup_Bestanden\Incredimail\")
        End If
        
        
        '**************************
        '** Webshots Collecties  **
        '**************************
        If chkFiles(4).Value = vbChecked Then
        van_map = X.CopyFolder("C:\Program Files\Webshots\Collections", "D:\Backup_Bestanden\")
        End If


        '**************************
        '** Server U Instelingen **
        '**************************
        If chkFiles(5).Value = vbChecked Then
        '************************************************
        '** Kijkt of Backup_Bestanden\Serv_U bestaat   **
        '************************************************
        Set Serv_u = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Serv_U") Then
        MkDir ("D:\Backup_Bestanden\Serv_U")
        End If
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        FileCopy "C:\Program Files\Serv-U\SERV-U.INI", "D:\Backup_Bestanden\Serv_U\SERV-U.INI"
        End If


        '************************
        '** Ws_FTP Instelingen **
        '************************
        If chkFiles(6).Value = vbChecked Then
        '************************************************
        '** Kijkt of Backup_Bestanden\WS_FTP bestaat   **
        '************************************************
        Set Ws_ftp = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\WS_FTP") Then
        MkDir ("D:\Backup_Bestanden\WS_FTP")
        End If
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Application Data\Ipswitch\WS_FTP\Sites", "D:\Backup_Bestanden\WS_FTP")
        End If


        '***********************
        '** Emule Instelingen **
        '***********************
        If chkFiles(7).Value = vbChecked Then
        '************************************************
        '** Kijkt of Backup_Bestanden\Emule bestaat   **
        '************************************************
        Set Emule = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Emule") Then
        MkDir ("D:\Backup_Bestanden\Emule")
        End If
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        van_map = X.CopyFolder("C:\Program Files\eMule\Config", "D:\Backup_Bestanden\Emule\")
        End If


        '************************
        '** Winnc Ftp accounts **
        '************************
        If chkFiles(8).Value = vbChecked Then
        '************************************************
        '** Kijkt of Backup_Bestanden\Winnc bestaat   **
        '************************************************
        Set Winnc = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Winnc") Then
        MkDir ("D:\Backup_Bestanden\Winnc")
        End If
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        van_map = X.CopyFolder("C:\Program Files\WinNc", "D:\Backup_Bestanden\Winnc\")
        End If
        
    Screen.MousePointer = vbDefault
    For Each i In Backup.Controls
        i.Enabled = True
    Next
    For Each i In Backup.Controls
        If TypeOf i Is CheckBox Then
            i.Value = vbUnchecked
        End If
    Next
    Command1.SetFocus
End Sub

Private Sub Command3_Click()
    End
End Sub

Private Sub Command4_Click()
Load Info_Outlook
Info_Outlook.Show
End Sub


en die ben ik nu weer in de tegenstelde richting aan het maken dus je moet niet willen zeggen dat ik alles voor gekouwd wil krijgen.
Er staan tal van programma`s te downloaden die het zelfde doen of kunnen maar met een beetje duwen in de goede richting probeer ik het zelf.

[ Voor 12% gewijzigd door Verwijderd op 28-12-2004 18:33 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 28 december 2004 @ 18:32:
Wat ik dan gedaan heb kun je zien HOOP ik dat ik niet alles voor gekouwd wi l krijgen
[/code]
en die ben ik nu weer in de tegenstelde richting aan het maken dus je moet niet willen zeggen dat ik alles voor gekouwd wil krijgen.
Er staan tal van programma`s te downloaden die het zelfde doen of kunnen maar met een beetje duwen in de goede richting probeer ik het zelf.
Met het risico op een eeuwige discussie waar we toch niet uitkomen: Je hoeft niet "al je code" hier neer te gooien als "bewijs". Mocht je problemen hebben met een bepaald stukje, dan kun je dat hier neer zetten. De hoeveelheid code zegt totaal utterly niks over hoeveel werk je hebt verzet of hoeveel moeite het heeft gekost. Ik heb gewerkt aan projecten met honderdduizenden en sommige zelfs tegen de miljoen regels code aan, en die waren soms "simpeler" om te maken dan andere projectjes die je in 2 velletjes A4 kunt printen...
Soms kun je over 1 klein dingetje ("1 regeltje" om het zo maar te zeggen) langer piekeren of ermee opgezadeld zitten dan een compleet ander (veel groter) project. En dan is hulp die je hier kunt krijgen een hemels geschenk.

Om even concreet op je code in te gaan: Het is erg veel van hetzelfde, en kan (IMHO) vele malen korter en flexibeler als je bijvoorbeeld al eens de paden die je wil backuppen gewoon in een aparte file bij houdt en dan gewoon een X-aantal keren een bepaalde sub aanroepen. Dat voorkomt onoverzichtelijke code (zoals je nu je code hebt). Verder gebruik je wel erg royaal commentaar (3 regels commentaar per 1 regel code is in sommige gevallen wel nodig (en er is an sich ook niks mis mee)) maar dit is wel erg veel...

Verder is je code onder command3 niet erg netjes: END gebruik je alleen in een sub main die je dus vanuit een module hebt gestart. Wil je dat je form "weg gaat" (en daarmee eventueel je programma dus stopt) dan gebruik je "Unload Me".

Ook zie ik je keer op keer hetzelfde object maken m.b.v. CreateObject. Waarom zou je dit elke keer weer doen? 1x is genoeg. Je kunt het object gewoon een volgende "opdracht" geven door de filecopy method opnieuw aan te roepen...

Concreet: Iets als:
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
        '************************
        '** Ws_FTP Instelingen **
        '************************
        If chkFiles(6).Value = vbChecked Then
        '************************************************
        '** Kijkt of Backup_Bestanden\WS_FTP bestaat   **
        '************************************************
        Set Ws_ftp = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\WS_FTP") Then
        MkDir ("D:\Backup_Bestanden\WS_FTP")
        End If
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Application Data\Ipswitch\WS_FTP\Sites", "D:\Backup_Bestanden\WS_FTP")
        End If


        '***********************
        '** Emule Instelingen **
        '***********************
        If chkFiles(7).Value = vbChecked Then
        '************************************************
        '** Kijkt of Backup_Bestanden\Emule bestaat   **
        '************************************************
        Set Emule = CreateObject("scripting.filesystemobject")
        If Not Ws_ftp.folderexists("D:\Backup_Bestanden\Emule") Then
        MkDir ("D:\Backup_Bestanden\Emule")
        End If
        '***************************************************
        '** Kopieert de onderstaande mappen en bestanden  **
        '***************************************************
        van_map = X.CopyFolder("C:\Program Files\eMule\Config", "D:\Backup_Bestanden\Emule\")
        End If

Wordt dan al gauw:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
        Set oMyObject = CreateObject("scripting.filesystemobject")
        
        If chkFiles(6).Value = vbChecked Then
            If Not oMyObject.folderexists("D:\Backup_Bestanden\WS_FTP") Then MkDir ("D:\Backup_Bestanden\WS_FTP")
            van_map = X.CopyFolder("C:\Documents and settings\" & oNetwork.UserName & "\Application Data\Ipswitch\WS_FTP\Sites", "D:\Backup_Bestanden\WS_FTP")
        End If

        If chkFiles(7).Value = vbChecked Then
            If Not oMyObject.folderexists("D:\Backup_Bestanden\Emule") Then MkDir ("D:\Backup_Bestanden\Emule")
            van_map = X.CopyFolder("C:\Program Files\eMule\Config", "D:\Backup_Bestanden\Emule\")
        End If

Vervolgens kun je je een boel werk besparen door een for-lus te gebruiken als je je checkboxes wil uitlezen:
code:
1
2
3
4
5
6
7
8
Dim T as integer

For T = 0 to chkFiles.count-1
  If chkFiles(T).value = vbChecked then
    ...
    ...
  End If
Next


Ook het juist gebruik van subroutines mis ik. Ik zie telkens weer:
code:
1
2
3
        If Not Ws_ftp.folderexists("blablablabla") Then
        MkDir ("blablablabla")
        End If

Buiten het feit dat als een pad wijzigt dat je het dan al 2x moet aanpassen, is het later, als blijkt dat deze "simpele check" niet voldoende of goed werkt een hel om aan te passen (je moet het dan immers tig keer in je project aanpassen. Je kunt dan beter iets doen in de trend van:
Visual Basic:
1
2
3
Public Sub CheckAndCreateDir(strFolderName as string)
        If Not Ws_ftp.folderexists(strFolderName) Then MkDir (strFolderName)
End Sub


Je kunt dan gewoon telkens hetvolgende doen:

Visual Basic:
1
2
3
CheckAndCreateDir "C:\MyFolder\Blabla"
CheckAndCreateDir "C:\MyFolder\Joehoe"
...


Op deze manier hoef je een pad maar 1x te wijzigen.
Even daarop doorgaande, wat dacht je hiervan:
code:
1
2
3
4
5
6
7
8
9
BackupFolder "C:\MyFolder\Blabla"
BackupFolder  "C:\MyFolder\Joehoe"

Public Sub BackupFolder(strFolderName as string)
   CheckAndCreateDir strFolderName
   ...
   ...hier je backup code
   ...
End Sub


Daarmee "nest" je dus al 2 subs en kun je in 1 regel code een complete directory backuppen. Maak je van de Subs vervolgens Functions, dan kun je ook statuscodes gaan teruggeven (gelukt of niet)> In deze opzet kun je ook later makkelijk centraal error-handling per subroutine inbouwen, hetgeen ook ontbreekt in je code. Wat als je programma een map niet kan maken of vinden?

Vervolgens pas je je programma weer zodanig aan dat de instellingen (welke mappen gebackupped moeten worden) uit een bestand worden gelezen in een array of collection of whatever, en dan kun je dus weer met een lusje in één klap 1, 2, 54 of 10.000.000 bestanden backuppen:
code:
1
2
3
For T=0 to UBound(arrFiles)
  BackupFolder arrFiles(T)
Next

Je ziet dat je zo een stuk flexibeler bent en het onderhoud aan je code (dat komt er geheid, bij iedereen, in elk project) is dan een stuk aangenamer (hoewel ik vrees dat het nooit écht aangenaam zal worden ;) Ik heb er in iedergeval nog nooit lol aan beleefd :Y) )

Nogmaals, niet verkeerd bedoeld: Neem even pauze van dit project, laat alles even bezinken, neem een tutorial of goed VB boek bij de hand en bekijk het project dan nog eens. Je zult snel merken dat je heel veel werk dubbel zit te doen en dit waarschijnlijk in een paar regels code netter en flexibeler kunt opzetten dan je nu bezig bent. Je zult er alleen maar van profiteren. Ik zie gewoon dat je wat basisprincipes mist, en daar is niks mis mee. Zo zijn we allemaal begonnen en we hebben het allemaal geleerd (velen onder ons ook met hulp van anderen, zoals GoT). Sluit je bij ons aan :Y)

[ Voor 134% gewijzigd door RobIII op 28-12-2004 20:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ik vind allemaal heel fijn dat je het zo goed probeert uit te leggen.
Je laat precies zien dat ik heel me project waaraan ik bijna een volle week alles bij elkaar aan bezig ben geweest, helemaal anders kan en makkelijker.

Tja er lopen meer wegen naar rome zal ik maar zeggen
Ik neem het niet kwalijk dat je het probeert uit te leggen maar je probeert me te vertellen hoe ik het beter en anders kan doen.
Je kan mijn code waarschijnlijk nog wel op 20 andere schrijvenn, als er nog 10 man reageren zullen er waarschijnlijnnk nog 5 andere codes komen :'(

Maar het enige waar ik nog om vroeg om me zonder toeters en bellen weg wijs in te maken is dat van dat register en daar lees ik vervolgens niet een woord meer over jammer.

Verwijderd

@Maico: Het is gewoon jammer dat je wel code schrijft maar dan niet probeert dat een beetje netjes en efficiënt te doen na voorbeelden van anderen hoe dat zou kunnen. Moet je verder zelf weten maar dit is een Tweakers forum en zeker dit subforum PW verwacht gewoon meer van je dan je nu toont.
Als ik dan bijv. zie dat je weinig leert van de voorbeelden dan heb ik ook verder niet zo'n zin meer om op nog een vraag te gaan antwoorden.
En als je echt er zelf niet kan opkomen gewoon met google op regedit te zoeken (de 1e pagina geeft al verscheidene nuttige links) voor een antwoord op je probleem m.b.t. welke / switch je moet gebruiken dan zie ik het somber in voor de rest van je project.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 28 december 2004 @ 21:32:
Maar het enige waar ik nog om vroeg om me zonder toeters en bellen weg wijs in te maken is dat van dat register en daar lees ik vervolgens niet een woord meer over jammer.
Pardon :?
Lees dan deze reply nog maar eens heel goed!
Ik zal het je nog makkelijker maken:
RobIII schreef op dinsdag 28 december 2004 @ 17:40:
Behalve dat shell natuurlijk een errug ranzige methode is om iets in het register te zetten (er zijn immers genoeg, goed gedocumenteerde, API's voor zie regXXX), zou je eens kunnen beginnen met zoeken naar regedit commandline op een willekeurige zoekmachine. Verder zie ik in 1 oogopslag dat je na regedit geen spatie shelled, waardoor je quotes dus meteen tegen regedit aan staan...
En dan een stukje verderop:
RobIII schreef op dinsdag 28 december 2004 @ 17:40:
Nog een redelijk compleet voorbeeld voor het lezen en schrijven van de registry vind je o.a. hier, hier of hier.
Dan tel ik dus al zo 4 directe links naar voorbeelden en documentatie en 1 link naar een google pagina met meer dan genoeg info. Verder vertel ik je in het eerste stukje expliciet waar het probleem in jouw code volgens mij zit (de spatie tussen regedit en de parameter(s)).

Ik dacht dat ik de afgelopen replies meer dan voldoende informatie van mezelf en van derden heb verschaft om je niet alleen naar je spreekwoordelijke "Rome" te helpen, maar ook nog via Tokyo mocht je dat willen! Lezen is ook een kunst... En ik steek <censuur> niet voor niks zoveel tijd in mijn replies, juist omdat ik zie dat je nog "leek" bent en ik je dus zo goed mogelijk op weg wil helpen en je wil bijstaan in het "meteen goed aanleren" in plaats van "aanmodderen".

Stank voor dank heet zoiets. En als ik dan zie hoeveel aandacht je zelf in je replies steekt, dan jeukt het bij mij al helemaal. Ik doe <censuur> mijn best om je te helpen, doe dan op z'n minst je best om aan te geven waar het probleem zit, wat er niet lukt, welke foutmelding je krijgt en wat je hebt geprobeerd. Ik zie jou alleen telkens weer posten "...'t werkt niet..." en daarmee is jouw kous af...

[ Voor 19% gewijzigd door RobIII op 29-12-2004 01:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Bedankt voor wie toch een leek hebben wilde helpen.
Ik heb door middel van de help in vb de oplossing gevonden.
En daarmee is mijn projectje af.

code:
1
"regedit -s "


Ps Het is nooit mijn bedoeling geweest om een specialist in VB te worden.
Het is voor mij een eenmalig iets vandaar dat ik daar geen dure boeken voor aanschaf, en me eigen niet verder ga verdiepen in dingen die ik waarschijnlijk nooit zal gebruiken.
Pagina: 1