[VB6] Standaard windows dir opvragen...

Pagina: 1
Acties:

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 09-08 20:34
Ik ben bezig met een programma te maken in VB6 en nu moet mijn programma een aantal bestanden kopieëren naar de windows/system directory. Ik kan me herinneren dat er een standaard stukje code is om de windows directory op te vragen zodat ik de bestanden daarin kan zetten. Ik heb wel een hoop code op internet gevonden waarmee je het besturingssysteem mee kan bepalen, maar dat vind ik niet echt betrouwbaar omdat sommige mensen niet de standaard windows dir gebruikt bij de installatie.

Dus ik dacht slim te zijn en het volgende stukje tekst te schrijven:
Visual Basic .NET:
1
2
3
4
5
6
7
If Dir$("C:\Windows\") <> "" Then
    'hier de copy naar c:\windows
ElseIf Dir$("C:\winnt\") <> "" Then
    'Copy naar c:\winnt\
Else
    MsgBox "Kan de windir niet bepalen..."
End If

Maar dit is nog steeds niet echt betrouwbaar. Heeft iemand niet een beter idee om dit op te lossen???

Oja, sommige DLL's moet ik registreren die ik kopieëer en gaat normaal gesproken makkelijk in een dosbox met regsrv32, maar kan ik dit ook laten doen in VB zelf en dat ik niet een dosbox hoeft te openen? En als de DLL geregistreerd is moet je normaal gesproken op OK drukken, hoe kan ik dit onderdrukken???

[ Voor 5% gewijzigd door Polderdijk op 09-04-2003 08:55 . Reden: code=VB ]

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


Verwijderd

"%windir%" gebruiken ipv C:\WinNT\


Visual Basic .NET:
1
2
Dir$ = %windir%
MsgBox Dir$

Zie: http://www.gangarasa.com/TechForum/VB/vbTips.html

of alternatief:
- http://msdn.microsoft.com...stall/create-inf_3aav.asp (INF)
- http://fredsfastcram.netfirms.com/WSHFC.htm (WSH)

[ Voor 157% gewijzigd door Verwijderd op 09-04-2003 09:04 ]


  • danslo
  • Registratie: Januari 2003
  • Laatst online: 23:06
Hmmzz.. Nu kopieer je dus naar C:\ terwijl iemand misschien wel windows op D:\ heeft staan. Ik dacht dat je dit kon vermijden door %Windir% te gebruiken.

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 09-08 20:34
Wat ik gedaan hebt is MsgBox %Windir% en dat geeft een foutmelding op, als ik 't tussen "" dan krijg ik natuurlijk de tekst zelf te zien.

Iemand nog een oplossing?

[ Voor 55% gewijzigd door Polderdijk op 09-04-2003 08:42 ]

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 21-08 22:41
als je met Shell.Execute de regsvr32 opstart met het attribuut /s (Silent) zie je geen box meer waar je op OK moet drukken

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 09-08 20:34
Twilight Burn schreef op 09 april 2003 @ 08:37:
als je met Shell.Execute de regsvr32 opstart met het attribuut /s (Silent) zie je geen box meer waar je op OK moet drukken
Da's inderdaad een goede oplossing. Als ik de standaard windows dir te pakken hebt dan zal ik 't gaan testen.

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


Verwijderd

Wat ik gedaan hebt is MsgBox %Windir% en dat geeft een foutmelding op, als ik 't tussen "" dan krijg ik natuurlijk de tekst zelf te zien.

Iemand nog een oplossing?
Je wil natuurlijk wel de waarde van de %WinDir% weten -> Dir$ = %windir%

Of je gebruikt de variabele direct in de commando's die je wilt uitvoeren:

2 voorbeelden, letterlijk copypasted zoals die zat bij 2 codecs

code:
1
2
3
4
5
6
7
@echo Registering DLL Filters...
@regsvr32.exe /s DivX.dll > nul
@regsvr32.exe /s DivX412.dll > nul
@regsvr32.exe /s DivXc32.dll > nul
@regsvr32.exe /s DivXc32f.dll > nul
@echo Finished Registering DLL Filters...
%windir%\RUNDLL32.EXE shell32.dll,SHExitWindowsEx 2


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
@echo off
echo Installing the AC3 audio codec...

if not exist IVIAUDIO.AX goto error
if not exist MPGAUDIO.AX goto error

if "%OS%" == "Windows_NT" goto WinNT

:Win9x
echo Detected Windows 95/98/ME
echo Copying system files
copy IVIAUDIO.AX %WINBOOTDIR%\SYSTEM > NUL
copy MPGAUDIO.AX %WINBOOTDIR%\SYSTEM > NUL
echo Updating system registry
%WINBOOTDIR%\SYSTEM\REGSVR32 /s %WINBOOTDIR%\SYSTEM\IVIAUDIO.AX > NUL
%WINBOOTDIR%\SYSTEM\REGSVR32 /s %WINBOOTDIR%\SYSTEM\MPGAUDIO.AX > NUL
goto finished

:WinNT
echo Detected Windows 2000/NT/XP
echo Copying system files
copy IVIAUDIO.AX %WINDIR%\SYSTEM > NUL
copy MPGAUDIO.AX %WINDIR%\SYSTEM > NUL
echo Updating system registry
%WINDIR%\SYSTEM32\REGSVR32 /s IVIAUDIO.AX > NUL
%WINDIR%\SYSTEM32\REGSVR32 /s MPGAUDIO.AX > NUL
goto finished

:error
echo File not found, unzip iviaudio.ax and mpgaudio.ax before trying to install
echo Installation failed, press any key...
pause > NUL
goto end

:finished
echo Installation successful, press any key...
pause > NUL
goto end

:end


Nu prog ik niet (meer) in VB, maar volgens mij kun je ook met GetWindowsDir() een eind komen...

[ Voor 88% gewijzigd door Verwijderd op 09-04-2003 08:54 ]


Verwijderd

het is misschien handig om een API daarvoor te gebruiken. ff 1 min googlen en ziezo kant en klare code.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'// DLL declarations and constants
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Const MAX_PATH As Integer = 260

'// Get Windows Directory function
Public Function GetWindowsDir() As String
    Dim strWinDir As String '// String that will contain win path
    Dim lngResult As Long '// Long Variable that will contain the result value (success/fail)
    '// Fill the Windows dir variable with 260 spaces (259 is the maximum path length, with one space for the trailing null)
    '// if you do not give enough space, you will not get anything at all.
    strWinDir = Space(MAX_PATH)
    '// Call the function, and get the result. We pass the strWinDir variable as a parameter,
    '// this way the DLL can fill it with the result. The last parameter specifies the length of the string
    lngResult = GetWindowsDirectory(strWinDir, MAX_PATH)
    '// suceeded?
    If lngResult = 0 Then
        '// failed, return nothing
        GetWindowsDir = vbNull
    Else
        '// successful, trim result string and return it
        GetWindowsDir = Trim(strWinDir)
    End If
End Function


Dit is toch precies wat jij wil?

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 09-08 20:34
Verwijderd schreef op 09 april 2003 @ 08:44:
het is misschien handig om een API daarvoor te gebruiken. ff 1 min googlen en ziezo kant en klare code.

code:
1
Een stukje code


Dit is toch precies wat jij wil?
Kijk, daar heb ik wat aan. Mijn grote vraag is nu, op welke woorden heb jij gegoogled, ik heb gisteren vanaf half 4 tot half 5 gezocht, en op google kwam ik een hoop tegen, maar niet het geen wat ik zocht. Hier op GoT kon ik ook niets vinden.

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


Verwijderd

Verwijderd schreef op 09 april 2003 @ 08:34:
"%windir%" gebruiken ipv C:\WinNT\

of: http://msdn.microsoft.com...stall/create-inf_3aav.asp

Visual Basic .NET:
1
2
Dir$ = %windir%
MsgBox Dir$
Dit gaat niet werken, want de link waarnaar jij verwijst geldt voor .INF files. Dat is heel iets anders dan VB

Verwijderd

Polderdijk schreef op 09 April 2003 @ 08:49:
[...]

Kijk, daar heb ik wat aan. Mijn grote vraag is nu, op welke woorden heb jij gegoogled, ik heb gisteren vanaf half 4 tot half 5 gezocht, en op google kwam ik een hoop tegen, maar niet het geen wat ik zocht. Hier op GoT kon ik ook niets vinden.
Ik heb gezocht op "vb api get windows dir", ik wist al dat er een API voor was dus vandaar ik api erbij heb gezet. De rest spreekt voorzich. Oh ja, als je in het vervolg nog meer API`s nodig hebt is hier een programmatje voor welke de meest gebruikte kent. Hierbij zitten de declaraties en voobeelden ook in verwerkt. Zie voor meer duidelijkheid:
http://www.mentalis.org/agnet/apiguide.shtml

Verwijderd

Dit gaat niet werken, want de link waarnaar jij verwijst geldt voor .INF files. Dat is heel iets anders dan VB
Het ging er ook niet om of dat precies met VB ging, het ging erom dat je op verschillende manieren het doel (scripting en environment variabeles uitlezen/verwerken) kon behalen...

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 09-08 20:34
Verwijderd schreef op 09 april 2003 @ 08:55:
[...]


Ik heb gezocht op "vb api get windows dir", ik wist al dat er een API voor was dus vandaar ik api erbij heb gezet. De rest spreekt voorzich. Oh ja, als je in het vervolg nog meer API`s nodig hebt is hier een programmatje voor welke de meest gebruikte kent. Hierbij zitten de declaraties en voobeelden ook in verwerkt. Zie voor meer duidelijkheid:
http://www.mentalis.org/agnet/apiguide.shtml
Ik heb het programma gedownload, zo te zien staat er HEEL veel informatie in. Dat is wel beter. In inderdaad, ik heb met jou zoekworden gezocht en toen kwam ik er ook bij. 8)7 Ik gebruik ook altijd de verkeerde woorden 8)7

Ik ga ff kijken of ik mijn progje verder af kan maken...

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Aerox.2000
  • Registratie: Februari 2001
  • Laatst online: 13-05 08:57
Dit is iets korter:
MsgBox Environ("Windir")

(werkt iig op windows xp)

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 09-08 20:34
Aerox.2000 schreef op 09 april 2003 @ 09:07:
Dit is iets korter:
MsgBox Environ("Windir")

(werkt iig op windows xp)
KIJK _/-\o_
Ik wist zeker dat het maar 1 regel code was. Op Win2K werkt het ook, nu nog ff proberen op win 98 en 95...

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Er is ook een API call voor en wel te weten GetWindowsDirectory.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:27

Creepy

Tactical Espionage Splatterer

Lorn schreef op 09 april 2003 @ 09:14:
Er is ook een API call voor en wel te weten GetWindowsDirectory.
Zoals joop66 al erg mooi had aangegeven ;) Volgende keer de gehele draad even doorlezen?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Creepy schreef op 09 April 2003 @ 09:21:
[...]

Zoals joop66 al erg mooi had aangegeven ;) Volgende keer de gehele draad even doorlezen?
Sorry, had mijn ochtend koffie nog niet op.

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Mocht je nog andere API's zoeken is het altijd handig om even te kijken in de API viewer. Dit programmaatje zit standaard bij VB en Visual studio.

It’s nice to be important but it’s more important to be nice


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:27

Creepy

Tactical Espionage Splatterer

Lorn schreef op 09 April 2003 @ 09:33:
[...]


Sorry, had mijn ochtend koffie nog niet op.
*tril* *rammel* Neeed more coffee! Coffee gooooooooood ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

JonkieXL schreef op 09 April 2003 @ 09:38:
Mocht je nog andere API's zoeken is het altijd handig om even te kijken in de API viewer. Dit programmaatje zit standaard bij VB en Visual studio.
De Platform SDK is ook een onmisbare tool naar mijn mening. Staat echt alles in wat je wilt weten en dan nog veel meer. Verder is www.mvps.org/vbnet een hele goede site met duidelijke voorbeelden.

  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Creepy schreef op 09 April 2003 @ 09:39:
[...]

*tril* *rammel* Neeed more coffee! Coffee gooooooooood ;)
Hmm... akelig dicht bij de waarheid.

  • MaNDaRK
  • Registratie: Oktober 2001
  • Laatst online: 22-08 11:01
Polderdijk schreef op 09 April 2003 @ 09:08:
[...]

KIJK _/-\o_
Ik wist zeker dat het maar 1 regel code was. Op Win2K werkt het ook, nu nog ff proberen op win 98 en 95...
Windows 98 werkt het ook ;)
(Het is zelfs een compaq :+)

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 09-08 20:34
MaNDaRK schreef op 09 april 2003 @ 11:36:
[...]

Windows 98 werkt het ook ;)
(Het is zelfs een compaq :+)
:o Ik heb het ook net getest op een Compaq Evo met Win98, en daar werkt 't ook!

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 01-08 09:33
Aerox.2000 schreef op 09 April 2003 @ 09:07:
Dit is iets korter:
MsgBox Environ("Windir")

(werkt iig op windows xp)
Maar die environment variabelen kan je aanpassen lijkt mij... Ik zou niet weten waarom mensen dat zouden doen, maar als je echt zekerheid wil hebben kan je denk ik beter die API call gebruiken

Don't be afraid of the dark, be afraid of what it hides


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Geheel overbodige posting...

[ Voor 96% gewijzigd door Lorn op 09-04-2003 13:53 . Reden: overbodige post ]

Pagina: 1