/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Hvordan finder man "Programmer" biblioteke~
Fra : Neo.dk


Dato : 09-10-02 10:21

Hej alle

Hvordan finder man computerens "programmer"/"program files" bibliotek ?

altså .. hvordan får man Visual basic til at læse denne værdi -
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProgramFilesPat
h

(som på min PC er c:\programmer)

er det med en GetSetting oder was ?

hvordan skal denne GetSetting så skrives ?

Findes der en anden smartere måde at gøre det på ?

På forhånd tak

Mvh Neo





 
 
John Doe (09-10-2002)
Kommentar
Fra : John Doe


Dato : 09-10-02 17:24
Neo.dk (09-10-2002)
Kommentar
Fra : Neo.dk


Dato : 09-10-02 22:17

Hejsa ..

Tak for dit link !

Jeg havde selv fundet den, og var overbevist om at den ikke kunne give mig
den placering jeg søgte (c:\programmer)

men efter at have prøvet mig lidt frem, fandt jeg ud af at ved at tilføje
følgende konstant:

Private Const CSIDL_PROGRAMMER = &HF26

- så opnåede jeg det resultat jeg søgte efter !

... Tak skal du have

Mvh Neo



Neo.dk (10-10-2002)
Kommentar
Fra : Neo.dk


Dato : 10-10-02 07:55

> - så opnåede jeg det resultat jeg søgte efter !
>
> .. Tak skal du have
>
> Mvh Neo

hmm ... ja så knækkede filmen selvfølgelig alligevel !!

Den før omtalte modifikation virkede kun korrekt under Win XP, og ikke under
Win 98 - og så kan det alligevel ikke bruges !

John Doe .. Hvordan får du snutten som du sendte mig et link til - til at
vise følgende ?

c:\programmer
c:\windows
c:\windows\system32

mvh Neo



John Doe (10-10-2002)
Kommentar
Fra : John Doe


Dato : 10-10-02 11:52

Æv - havde lige håbet at jeg kunne spise dig af der


Ok .. ny kode følger - glem det andet

2 stykker kode:
1. modRegistry.bas
2. eksempel kode

Kopier flg ind i en .bas-fil; fx modRegistry.bas
'=======================================
' modRegistry.bas
'=======================================
Option Explicit
'
' Written by Dave Scarmozzino www.TheScarms.com
'

Const RUN_MODE = True

Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type

Public Const MAX_SIZE = 2048
Public Const MAX_INISIZE = 8192

' Constants for Registry top-level keys
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_DYN_DATA = &H80000006
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_CLASSES_ROOT = &H80000000

' Return values
Public Const ERROR_SUCCESS = 0&
Public Const ERROR_FILE_NOT_FOUND = 2&
Public Const ERROR_MORE_DATA = 234
Public Const ERROR_NO_MORE_ITEMS = 259&

' RegCreateKeyEx options
Public Const REG_OPTION_NON_VOLATILE = 0

' RegCreateKeyEx Disposition
Public Const REG_CREATED_NEW_KEY = &H1
Public Const REG_OPENED_EXISTING_KEY = &H2

' Registry data types
Public Const REG_NONE = 0
Public Const REG_SZ = 1
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4

' Registry security attributes
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8

Declare Function RegEnumValue Lib "advapi32.dll" _
Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, _
ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved
As Long, _
lpType As Long, lpData As Any, lpcbData As Long) As Long

Declare Function RegDeleteValue Lib "advapi32.dll" _
Alias "RegDeleteValueA" _
(ByVal hKey As Long, ByVal lpValueName As String) _
As Long

Declare Function RegDeleteKey Lib "advapi32.dll" _
Alias "RegDeleteKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String) As Long

Declare Function RegOpenKeyEx Lib "advapi32.dll" _
Alias "RegOpenKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal ulOptions As Long, ByVal samDesired As Long, _
phkResult As Long) As Long

Declare Function RegCreateKeyEx Lib "advapi32.dll" _
Alias "RegCreateKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal Reserved As Long, ByVal lpClass As String, _
ByVal dwOptions As Long, ByVal samDesired As Long, _
lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, _
lpdwDisposition As Long) As Long

Declare Function RegQueryValueEx Lib "advapi32.dll" _
Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpszValueName As String, _
ByVal lpdwReserved As Long, lpdwType As Long, _
lpData As Any, lpcbData As Long) As Long

Declare Function RegSetValueEx Lib "advapi32.dll" _
Alias "RegSetValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, _
ByVal Reserved As Long, ByVal dwType As Long, _
lpData As Any, ByVal cbData As Long) As Long

Public Declare Function RegEnumKey Lib "advapi32.dll" Alias _
"RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, _
ByVal lpName As String, ByVal cbName As Long) As Long

Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long

Declare Function GetPrivateProfileSection Lib "kernel32" _
Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, ByVal _
lpFileName As String) As Long

Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String,
_
ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As
String, _
ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) _
As Long

Declare Function GetPrivateProfileInt Lib "kernel32" _
Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName
_
As String) As Long

Public Function fDeleteKey(ByVal sTopKey As String, _
ByVal sSubKey As String, ByVal sKeyName As String) As Long
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' Use this function to:
' - Delete a registry key.
'
' sTopKey
' - A top level registry key abbreviation
{"HKCU","HKLM","HKU","HKDD","HKCC","HKCR"}
'
' sSubKey
' - A registry subkey.
'
' sKeyName
' - The name of the key to delete.
'
' Return Value
' - 0 if successful, non-zero otherwise.
'
' Example
' lResult = fDeleteKey("HKCU", "Software\YourKey\...\YourApp",
"KeyToDelete")
' Call fDeleteKey("HKCU", "Software\YourKey\...\YourApp", "KeyToDelete")
'
' NOTE:
' The key to be deleted cannot be a top-level key
' and cannot have any sub-keys.
'
Dim lTopKey As Long
Dim lHandle As Long
Dim lResult As Long

If RUN_MODE Then On Error GoTo fDeleteKeyError
lResult = 99
lTopKey = fTopKey(sTopKey)
If lTopKey = 0 Then GoTo fDeleteKeyError

lResult = RegOpenKeyEx(lTopKey, sSubKey, 0, KEY_CREATE_SUB_KEY, lHandle)
If lResult = ERROR_SUCCESS Then
lResult = RegDeleteKey(lHandle, sKeyName)
End If

If lResult = ERROR_SUCCESS Or lResult = ERROR_FILE_NOT_FOUND Then
fDeleteKey = ERROR_SUCCESS
Else
fDeleteKey = lResult
End If
Exit Function

fDeleteKeyError:
fDeleteKey = lResult
End Function

Public Function fDeleteValue(ByVal sTopKeyOrFile As String, _
ByVal sSubKeyOrSection As String, ByVal sValueName As String) As Long
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' Use this function to:
' - Delete a registry value.
' - Delete an .ini file value.
'
' sTopKeyOrIniFile
' - A top level registry key abbreviation
{"HKCU","HKLM","HKU","HKDD","HKCC","HKCR"} or
' - The full path of an .ini file (ex. "C:\Windows\MyFile.ini")
'
' sSubKeyOrSection
' - A registry subkey or
' - An .ini file section name
'
' sValueName
' - A registry entry or
' - An .ini file entry
'
' Return Value
' - 0 if successful, non-zero otherwise.
'
' Example 1 - Delete a registry value.
' lResult = fDeleteValue("HKCU", "Software\YourKey\LastKey\YourApp",
"EntryToDelete")
'
' Example 2 - Delete an .ini file value.
' lResult = fDeleteValue("C:\Windows\Myfile.ini", "SectionName",
"EntryToDelete")
'
Dim lTopKey As Long
Dim lHandle As Long
Dim lResult As Long

If RUN_MODE Then On Error GoTo fDeleteValueError
lResult = 99
lTopKey = fTopKey(sTopKeyOrFile)
If lTopKey = 0 Then GoTo fDeleteValueError

If lTopKey = 1 Then
lResult = WritePrivateProfileString(sSubKeyOrSection, sValueName, "",
sTopKeyOrFile)
Else
lResult = RegOpenKeyEx(lTopKey, sSubKeyOrSection, 0, KEY_SET_VALUE,
lHandle)
If lResult = ERROR_SUCCESS Then
lResult = RegDeleteValue(lHandle, sValueName)
End If

If lResult = ERROR_SUCCESS Or lResult = ERROR_FILE_NOT_FOUND Then
fDeleteValue = ERROR_SUCCESS
Else
fDeleteValue = lResult
End If
End If
Exit Function

fDeleteValueError:
fDeleteValue = lResult
End Function

Public Function fEnumKey(ByVal sTopKey As String, _
ByVal sSubKey As String, sValues As String) As Long
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' Use this function to:
' - Enumerate the subkeys of a registry key.
'
' sTopKey
' - A top level registry key abbreviation
{"HKCU","HKLM","HKU","HKDD","HKCC","HKCR"}
'
' sSubKey
' - A registry subkey
'
' sValues
' - A returned string of the form:
' SubKeyName|SubKeyName|.... SubKeyName||
'
' Where - "|" equals vbNullChar (chr(0)).
'
' Return Value
' - 0 if successful, non-zero otherwise.
'
' Example 1
' lResult = fEnumKey("HKLM", "Software\Microsoft", sValues)
'
Dim bDone As Boolean
Dim lTopKey As Long
Dim lHandle As Long
Dim lResult As Long
Dim lIndex As Long
Dim sKeyName As String

If RUN_MODE Then On Error GoTo fEnumKeyError
lResult = 99
lTopKey = fTopKey(sTopKey)
If lTopKey = 0 Then GoTo fEnumKeyError
'
' Open the registry SubKey.
'
lResult = RegOpenKeyEx(lTopKey, sSubKey, 0, KEY_ENUMERATE_SUB_KEYS, lHandle)
If lResult <> ERROR_SUCCESS Then GoTo fEnumKeyError
'
' Get all subkeys until ERROR_NO_MORE_ITEMS or an error occurs.
'
Do While Not bDone
sKeyName = Space$(MAX_SIZE)
lResult = RegEnumKey(lHandle, lIndex, sKeyName, MAX_SIZE)

If lResult = ERROR_SUCCESS Then
sValues = sValues & Trim$(sKeyName)
lIndex = lIndex + 1
Else
bDone = True
End If
Loop
sValues = sValues & vbNullChar
If Len(sValues) = 1 Then sValues = sValues & vbNullChar
'
' Close the key.
'
fEnumKey = RegCloseKey(lHandle)
Exit Function
'
' Error processing.
'
fEnumKeyError:
fEnumKey = lResult
End Function
Public Function fEnumValue(ByVal sTopKeyOrIniFile As String, _
ByVal sSubKeyOrSection As String, sValues As String) As Long
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' Use this function to:
' - Enumerate the values of a registry key or
' - Enumerate all entries in a particular section of an .ini file.
'
' sTopKeyOrIniFile
' - A top level registry key abbreviation
{"HKCU","HKLM","HKU","HKDD","HKCC","HKCR"} or
' - The full path of an .ini file (ex. "C:\Windows\MyFile.ini")
'
' sSubKeyOrSection
' - A registry subkey or
' - An .ini file section name
'
' sValues
' - A returned string of the form:
' EntryName=Value|EntryName=Value|.... EntryName=Value||
'
' Where - Value can be a string or binary value.
' and - "|" equals vbNullChar (chr(0)).
'
' Return Value
' - 0 if successful, non-zero otherwise.
'
' Example 1
' lResult = fEnumValue("HKCU", "Software\YourKey\LastKey\YourApp",
sValues)
'
' Example 2
' lResult = fEnumValue("C:\Windows\Myfile.ini", "SectionName", sValues)
'
' NOTE:
' When enumerating registry values, only string, dword and binary values
' with a length under 2 bytes (which allows for true/false values) are
returned.
'
Dim lTopKey As Long
Dim lHandle As Long
Dim lResult As Long
Dim lValueLen As Long
Dim lIndex As Long
Dim lValue As Long
Dim lValueType As Long
Dim lData As Long
Dim lDataLen As Long
Dim bDone As Boolean
Dim sValueName As String
Dim sValue As String

If RUN_MODE Then On Error GoTo fEnumValueError
lResult = 99
lTopKey = fTopKey(sTopKeyOrIniFile)
If lTopKey = 0 Then GoTo fEnumValueError

If lTopKey = 1 Then
'
' Enumerate an .ini file section.
'
sValues = Space$(MAX_INISIZE)
lResult = GetPrivateProfileSection(sSubKeyOrSection, sValues,
Len(sValues), sTopKeyOrIniFile)
Else
'
' Open the registry SubKey.
'
lResult = RegOpenKeyEx(lTopKey, sSubKeyOrSection, 0, KEY_QUERY_VALUE,
lHandle)
If lResult <> ERROR_SUCCESS Then GoTo fEnumValueError
'
' Get all values until ERROR_NO_MORE_ITEMS or an error occurs.
'
Do While Not bDone
lDataLen = MAX_SIZE
lValueLen = lDataLen
sValueName = Space$(lDataLen)

lResult = RegEnumValue(lHandle, lIndex, sValueName, lValueLen, 0,
lValueType, ByVal lData, lDataLen)
If lResult = ERROR_SUCCESS Then
Select Case lValueType
Case REG_SZ
sValue = Space$(lDataLen)
sValueName = Left$(sValueName, lValueLen)
lResult = RegQueryValueEx(lHandle, sValueName, 0,
REG_SZ, ByVal sValue, lDataLen)
If lResult = ERROR_SUCCESS Then
sValues = sValues & sValueName & "=" & sValue
Else
GoTo fEnumValueError
End If
Case REG_DWORD
lResult = RegQueryValueEx(lHandle, sValueName, 0,
REG_NONE, lValue, lDataLen)
If lResult = ERROR_SUCCESS Then
sValueName = Left$(sValueName, lValueLen)
sValues = sValues & sValueName & "=" & lValue &
vbNullChar
Else
GoTo fEnumValueError
End If
Case REG_BINARY
If lDataLen <= 2 Then
lResult = RegQueryValueEx(lHandle, sValueName, 0,
REG_NONE, lValue, lDataLen)
If lResult = ERROR_SUCCESS Then
sValueName = Left$(sValueName, lValueLen)
sValues = sValues & sValueName & "=" & lValue &
vbNullChar
Else
GoTo fEnumValueError
End If
End If
Case Else
End Select
lIndex = lIndex + 1
Else
bDone = True
End If
Loop
sValues = sValues & vbNullChar
If Len(sValues) = 1 Then sValues = sValues & vbNullChar
'
' Close the key.
'
lResult = RegCloseKey(lHandle)
fEnumValue = lResult
End If
Exit Function
'
' Error processing.
'
fEnumValueError:
fEnumValue = lResult
End Function


Public Function fReadIniFuzzy(ByVal sIniFile As String, _
sSection As String, ByVal sIniEntry As String, _
ByVal sDefault As String, sValue As String) As Long
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' Use this function to:
' - Read a string value from an .ini file when you do not know the exact
' name of the section the value is in.
'
' sIniFile
' - The full path of an .ini file (ex. "C:\Windows\MyFile.ini")
'
' sSection
' - Any complete part of the .ini file section name.
' Ex: [ABC DEF GHI JKL]
' sSection Name can be "ABC" or "DEF" or "GHI" or "JKL" but not
' a partial value such as "AB" or "HI".
'
' NOTE: if sSection is passed as a variable and not as the actual
' string value, sSection will be populated with the
' complete section name.
'
' sEntry
' - An .ini file entry
'
' sDefault
' - The default value to return.
'
' sValue
' - The string value read.
' - sDefault if unsuccessful.
'
' Return Value
' - 0 if sEntry was found, non-zero otherwise.
'
' Example 1 - Read a string value from an .ini file.
' Ex: [ABC DEF GHI JKL]
' AppName="My App"
'
' sEntry = "AppName"
' lResult = fReadIniFuzzy("C:\Windows\Myfile.ini", "DEF", sEntry, sValue)
'
' Upon completion:
' lResult = 0
' sSection = "ABC DEF GHI JKL"
' sValue = "My App"
'
Dim sNextChar As String
Dim sLine As String
Dim sEntry As String
Dim sSectionName As String
Dim iLen As Integer
Dim iLocOfEq As Integer
Dim iFnum As Integer
Dim bDone As Boolean
Dim bFound As Boolean
Dim bNewSection As Boolean

If RUN_MODE Then On Error GoTo fReadIniFuzzyError
fReadIniFuzzy = 99
bDone = False
sValue = sDefault
sEntry = UCase$(sIniEntry)
sSection = UCase$(sSection)
iLen = Len(sSection)

iFnum = FreeFile
Open sIniFile For Input Access Read As iFnum

Line Input #iFnum, sLine
Do While Not EOF(iFnum) And Not bDone
sLine = UCase$(Trim$(sLine))
bNewSection = False
'
' See if line is a section heading.
'
If Left$(sLine, 1) = "[" Then
'
' See if section heading contains desired value.
'
sSectionName = sLine
Dim iPos As Integer
iPos = InStr(1, sLine, sSection)
If iPos > 0 Then
'
' Be sure the value is not part of a larger value.
'
sNextChar = Mid$(sLine, iPos + iLen, 1)
If sNextChar = " " Or sNextChar = "]" Then
'
' Search this section for the entry.
'
Line Input #iFnum, sLine
bFound = False
bNewSection = False
Do While Not EOF(iFnum) And Not bFound
'
' If we hit a new section, stop.
'
sLine = UCase$(Trim$(sLine))
If Left$(sLine, 1) = "[" Then
bNewSection = True
Exit Do
End If
'
' Entry must start in column 1 to avoid comment lines.
'
If InStr(1, sLine, sEntry) = 1 Then
'
' If entry found and line is not incomplete, get
value.
'
iLocOfEq = InStr(1, sLine, "=")
If iLocOfEq <> 0 Then
sValue = Mid$(sLine, iLocOfEq + 1)
sSection = Mid$(sSectionName, 2, InStr(1,
sSectionName, "]") - 2)
bFound = True
bDone = True
fReadIniFuzzy = 0
End If
End If
If Not bFound Then
Line Input #iFnum, sLine
End If
Loop
If EOF(iFnum) Then bDone = True
sSection = Mid$(sSectionName, 2, InStr(1, sSectionName,
"]") - 2)
End If
End If
End If
If Not bNewSection And Not bDone Then
Line Input #iFnum, sLine
End If
Loop
Close iFnum
Exit Function

fReadIniFuzzyError:
fReadIniFuzzy = 99
End Function


Public Function fReadValue(ByVal sTopKeyOrFile As String, _
ByVal sSubKeyOrSection As String, ByVal sValueName As String, _
ByVal sValueType As String, ByVal vDefault As Variant, _
vValue As Variant) As Long
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' Use this function to read a:
' - String, 16-bit binary (True|False), 32-bit integer registry value or
' - String or integer value from an .ini file.
'
' sTopKeyOrIniFile
' - A top level registry key abbreviation
{"HKCU","HKLM","HKU","HKDD","HKCC","HKCR"} or
' - The full path of an .ini file (ex. "C:\Windows\MyFile.ini")
'
' sSubKeyOrSection
' - A registry subkey or
' - An .ini file section name
'
' sValueName
' - A registry entry or
' - An .ini file entry
'
' sValueType
' - "S" to read a string value or
' - "B" to read a 16-bit binary value (applies to registry use only) or
' - "D" to read a 32-bit number value (applies to registry use only).
'
' vDefault
' - The default value to return. It can be a string or boolean.
'
' vValue
' - The value read. It can be a string or boolean.
' - vDefault if unsuccessful (0 when reading an integer from an .ini
file)
'
' Return Value
' - 0 if successful, non-zero otherwise.
'
' Example 1 - Read a string value from the registry.
' lResult = fReadValue("HKCU", "Software\YourKey\LastKey\YourApp",
"AppName", "S", "", sValue)
'
' Example 2 - Read a boolean (True|False) value from the registry.
' lResult = fReadValue("HKCU", "Software\YourKey\LastKey\YourApp",
"AutoHide", "B", False, bValue)
'
' Example 3 - Read an integer value from the registry.
' lResult = fReadValue("C:\Windows\Myfile.ini", "SectionName", "NumApps",
"D", 12345, lValue)
'
' Example 4 - Read a string value from an .ini file.
' lResult = fReadValue("C:\Windows\Myfile.ini", "SectionName", "AppName",
"S", "", sValue)
'
' Example 5 - Read an integer value from an .ini file.
' lResult = fReadValue("C:\Windows\Myfile.ini", "SectionName", "NumApps",
"B", "0", iValue)
'
Dim lTopKey As Long
Dim lHandle As Long
Dim lLenData As Long
Dim lResult As Long
Dim lDefault As Long
Dim lValue As Long
Dim sValue As String
Dim sSubKeyPath As String
Dim sDefaultStr As String
Dim bValue As Boolean

If RUN_MODE Then On Error GoTo fReadValueError
lResult = 99
vValue = vDefault
lTopKey = fTopKey(sTopKeyOrFile)
If lTopKey = 0 Then GoTo fReadValueError

If lTopKey = 1 Then
'
' Read the .ini file value.
'
If UCase$(sValueType) = "S" Then
lLenData = 255
sDefaultStr = vDefault
sValue = Space$(lLenData)
lResult = GetPrivateProfileString(sSubKeyOrSection, sValueName,
sDefaultStr, sValue, lLenData, sTopKeyOrFile)
vValue = Left$(sValue, lResult)
Else
lDefault = 0
lResult = GetPrivateProfileInt(sSubKeyOrSection, sValueName,
lDefault, sTopKeyOrFile)
End If
Else
'
' Open the registry SubKey.
'
lResult = RegOpenKeyEx(lTopKey, sSubKeyOrSection, 0, KEY_QUERY_VALUE,
lHandle)
If lResult <> ERROR_SUCCESS Then
fReadValue = lResult
Exit Function
End If
'
' Get the actual value.
'
Select Case UCase$(sValueType)
Case "S"
'
' String value. The first query gets the string length. The
second
' gets the string value.
'
lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_SZ, "",
lLenData)
If lResult = ERROR_MORE_DATA Then
sValue = Space(lLenData)
lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_SZ,
ByVal sValue, lLenData)
End If
If lResult = ERROR_SUCCESS Then 'Remove null character.
vValue = Left$(sValue, lLenData - 1)
Else
GoTo fReadValueError
End If
Case "B"
lLenData = Len(bValue)
lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_BINARY, bV
alue, lLenData)
If lResult = ERROR_SUCCESS Then
vValue = bValue
Else
GoTo fReadValueError
End If
Case "D"
lLenData = 32
lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_DWORD,
lValue, lLenData)
If lResult = ERROR_SUCCESS Then
vValue = lValue
Else
GoTo fReadValueError
End If
End Select
'
' Close the key.
'
lResult = RegCloseKey(lHandle)
fReadValue = lResult
End If
Exit Function
'
' Error processing.
'
fReadValueError:
fReadValue = lResult
End Function


Private Function fTopKey(ByVal sTopKeyOrFile As String) As Long
Dim sDir As String
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' This function returns:
' - the numeric value of a top level registry key or
' - 1 if sTopKey is a valid .ini file or
' - 0 otherwise.
'
If RUN_MODE Then On Error GoTo fTopKeyError
fTopKey = 0
Select Case UCase$(sTopKeyOrFile)
Case "HKCU"
fTopKey = HKEY_CURRENT_USER
Case "HKLM"
fTopKey = HKEY_LOCAL_MACHINE
Case "HKU"
fTopKey = HKEY_USERS
Case "HKDD"
fTopKey = HKEY_DYN_DATA
Case "HKCC"
fTopKey = HKEY_CURRENT_CONFIG
Case "HKCR"
fTopKey = HKEY_CLASSES_ROOT
Case Else
On Error Resume Next
sDir = Dir$(sTopKeyOrFile)
If Err.Number = 0 And sDir <> "" Then fTopKey = 1
End Select
Exit Function

fTopKeyError:
End Function

Public Function fWriteValue(ByVal sTopKeyOrFile As String, _
ByVal sSubKeyOrSection As String, ByVal sValueName As String, _
ByVal sValueType As String, ByVal vValue As Variant) As Long
'
' Written by Dave Scarmozzino www.TheScarms.com
'
' Use this function to write a:
' - String, 16-bit binary (True|False), 32-bit integer registry value or
' - String value to an .ini file.
'
' sTopKeyOrIniFile
' - A top level registry key abbreviation
{"HKCU","HKLM","HKU","HKDD","HKCC","HKCR"} or
' - The full path of an .ini file (ex. "C:\Windows\MyFile.ini")
'
' sSubKeyOrSection
' - A registry subkey or
' - An .ini file section name
'
' sValueName
' - A registry entry or
' - An .ini file entry
'
' sValueType
' - "S" to write a string value or
' - "B" to write a 16-bit binary value (applies to registry use only) or
' - "D" to write a 32-bit number value (applies to registry use only).
'
' vValue
' - The value to write. It can be a string, binary or integer.
'
' Return Value
' - 0 if successful, non-zero otherwise.
'
' Example 1 - Write a string value to the registry.
' lResult = fWriteValue("HKCU", "Software\YourKey\LastKey\YourApp",
"AppName", "S", "MyApp")
'
' Example 2 - Write a True|False value to the registry.
' lResult = fWriteValue("HKCU", "Software\YourKey\LastKey\YourApp",
"AutoHide", "B", True)
'
' Example 3 - Write an integer value to the registry.
' lResult = fWriteValue("HKCU", "Software\YourKey\LastKey\YourApp",
"NumOfxxx", "D", 12345)
'
' Example 4 - Write a string value to an .ini file.
' lResult = fWriteValue("C:\Windows\Myfile.ini", "SectionName", "AppName",
"S", "MyApp")
'
' NOTE:
' This function cannot write a non-string value to an .ini file.
'
Dim hKey As Long
Dim lTopKey As Long
Dim lOptions As Long
Dim lsamDesired As Long
Dim lHandle As Long
Dim lDisposition As Long
Dim lLenData As Long
Dim lResult As Long
Dim lValue As Long
Dim sClass As String
Dim sValue As String
Dim sSubKeyPath As String
Dim bValue As Boolean
Dim tSecurityAttributes As SECURITY_ATTRIBUTES

If RUN_MODE Then On Error GoTo fWriteValueError
lResult = 99
lTopKey = fTopKey(sTopKeyOrFile)
If lTopKey = 0 Then GoTo fWriteValueError

If lTopKey = 1 Then
'
' Read the .ini file value.
'
If UCase$(sValueType) = "S" Then
sValue = vValue
lResult = WritePrivateProfileString(sSubKeyOrSection, sValueName,
sValue, sTopKeyOrFile)
Else
GoTo fWriteValueError
End If
Else
sClass = ""
lOptions = REG_OPTION_NON_VOLATILE
lsamDesired = KEY_CREATE_SUB_KEY Or KEY_SET_VALUE
'
' Create the SubKey or open it if it exists. Return its handle.
' lDisposition will be REG_CREATED_NEW_KEY if the key did not exist.
'
lResult = RegCreateKeyEx(lTopKey, sSubKeyOrSection, 0, sClass, lOptions,
_
lsamDesired, tSecurityAttributes, lHandle, lDisposition)
If lResult <> ERROR_SUCCESS Then GoTo fWriteValueError
'
' Set the actual value.
'
Select Case UCase$(sValueType)
Case "S"
sValue = vValue
lLenData = Len(sValue) + 1
lResult = RegSetValueEx(lHandle, sValueName, 0, REG_SZ, ByVal
sValue, lLenData)
Case "B"
bValue = vValue
lLenData = Len(bValue)
lResult = RegSetValueEx(lHandle, sValueName, 0, REG_BINARY,
bValue, lLenData)
Case "D"
lValue = CInt(vValue)
lLenData = 4
lResult = RegSetValueEx(lHandle, sValueName, 0, REG_DWORD,
lValue, lLenData)
End Select
'
' Close the key.
'
If lResult = ERROR_SUCCESS Then
lResult = RegCloseKey(lHandle)
fWriteValue = lResult
Exit Function
End If
End If
Exit Function
'
' Error processing.
'
fWriteValueError:
fWriteValue = lResult
End Function

'=========================================
' END modRegistry.bas
'=========================================


Eksempel på læsning af værdi:


'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDi
r
Dim strTmp As String
Call fReadValue("HKLM", "SOFTWARE\Microsoft\Windows\CurrentVersion",
"ProgramFilesDir", "S", "", strTmp)
MsgBox strTmp

'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CommonFilesDir
Dim strTmp As String
Call fReadValue("HKLM", "SOFTWARE\Microsoft\Windows\CurrentVersion",
"CommonFilesDir", "S", "", strTmp)
MsgBox strTmp


---------- END ---------------------

Det burde fungere ....

mvh/Robert




John Doe (10-10-2002)
Kommentar
Fra : John Doe


Dato : 10-10-02 11:55

Zippet version


begin 666 regi.zip
M4$L#!!0````(`*1F2BULL*<6U@$``#\$```.````<F5G:2]&;W)M,2YF<FVE
MDEV+HS 4AN\%_T/P9F9A&=KIM.Q>[(6U=EO&?E"=E@6A1$V=,#&1).[TYV^B
MU=A"86"51.+SGIR<-V?O[\+E9@W&3X.!;4U1CBG83Y_FC!= 3T-@6P``#Y82
M,PK:YY<:3LV=AA.,J%P@G+_+EH^&/\<]&*"3-,&300]%K.SM.WKIAQUP)M\[
M]C+YT00&F'ZH,)S>.5"80H+,>:X/5$.S\?7.H81<OI5;)G!=<AT)P,,!TXQ]
M"C!#)U@166L[OSQ6%)!FTTI*%7)97;P#=^QK54ZKZAVW4SV/QRTV!AH\?!ZT
M.(+)DF;HW,<&=@X;.)ITN.>%P<-1D]JGF6W5DRLEQTDED2KYN(8%4L+.]"OX
MF[ $$BT)2YAJW1P2@6Y4'D=0PH3<XUN.,I02J#[+3&DB7MU*_'/)!,K,!IO&
M:?6?X!2K:[*M+<=_H9*'5=)=S5%U5_KQ^$WSA\6K_^<8;#PW.*Y<;[%<^W&X
MF4<'=^?'*YQR)MA)QI<&B+V*<]68>\2%RA1O.<LY+.:8(#'#W+9FN !"\J@H
M@2M4.W%,<]OR("'@M$,PVT-2H4=G\1JLG._ ^7(F+;Y)5L?K28TFI2IH)?(I
M.U_6_U^?=HQ14YY^53=H-VWK'U!+`P04````" "D9DHMJ+0^>X 4``! ;0``
M% ```')E9VDO;6]D4F5G:7-T<GDN8F%S[5W_;]LXLO^]0/\'PF^Q3;!N7I*V
MA]UB?8!C*ZUO$[MG.^WU;@^!;-.-4$7R2G*<]/7][V^&WTE1MNPDO3Y@=;>)
M(PZ'PYGAS/ C6FT7119-E@4E[T\N^^$U)2W2N$YG0_HIRHOLKO'TR6!11&E"
M@MM%'$VCXNF39_!_\B&+BH(F9')'NN$-):-IF%VG7[Y$24K(:K4Z&%]1=B\_
MF*;7K-/3)YTTR0LRO.A?G@^Z`0PUSI84&\9W"V 1="Z&O?''R_9X/.R=7(R#
MT=,G!*[DC":?BBMB7>V<G*7))TX1+T9TN@21[KHTGV;1HD@SFV+22ZXH$+P-
MDUE,-8^3-(UIF#Q]$B0S@F*@..^6$Y@KX>*>M_]Q.>K]$\4]/GSYLZ>UU^\)
M@I^/?CE&!L]X:Y@4.9F#*%*=I$@7SV-Z0V/RF=[E#J^WOP4?+T$'PZ _OKP8
M!4/@^./;GP_9=>0C/AMTVF>7Y^W.VUX_,*F/?=3(<F12O?!1=3_V+[OM<=LD
M_,LZ23N#_FGOC4G^RDM^UAZ-@M'E<# 8F\2'7&%#6BRSA-R$\9*ZB@F&P\'P
M<G31Z00CG,#ACUZ"T]Y9<-D?C"]/!Q?]+MK+3W<^& 9RBL<O7GII^@-.UAL'
MYSCD\:M??I2"?NID-"SH;_0NN"4I6QZNQ,/@S>7@W;@WZ .G_N7[P5E[#-*A
M[%XNW2A?I'F$K#R<.L.@/0ZZE_W@PR6HDFG/]0<^8M 'LN ?O=&XUW^C:(_5
MF-P+9V$1D@*<W2<VR"OD+#6-_@D-OH%/>OWV$,=R/0H;NQ\&0[3&2T>*7"Q9
M$LH@Y(J#;O/WBV#X\?)]^^PB\,X;:4;!V*!P?9\Y'],@N-")4HIK=R0+^A?G
MP="@%,L%)>_2:1QFE)PNDRF+B#"1(%E>OT>/)6?1A#3"V4VXB%X<'\SBN$$N
M>>1A@2:.PIPTS![M!MD[N8./Y I<0 :K)N'W9JM>,J.W^K;!C%/$"\:&Q6R@
M&H$*D2Y>3"=6@\DU7@QI3K,;.O,RCA<L#JNF>-%%1X&_V\D=9RUO(,&^CK!^
M[71I3 NZG7Z,/FV+9(VRO*K8M_C7$10Y;R<F]-A"R-%R(NY+"3>(-5C0A(>'
MNF*I'O<0R^-KRY@7`;G;.P^O(>%&685#+:X^@\,MXZ*VRY@QL>ZDC3X/.^WR
M8I&=.W&8YVO[SE:[J4Q7,FT5%=E Y>*H6=VJV,O)*;1O\?4FS.[:BMC""
MV6D+*^1?O%',$^UFJ[(Y\*X=LJSIWR]ZC6BQK1)TE_O%KBU\L;X"./T:)8AL
M6)7G*L(CG[TQ;$/3WS_'N7J1DS"SV^:@$J=YC>CN$74]ZS>T>)=%-Q!\WF7I
M/(HI+%W6P,;Y3+.$QB^.?;Y2U5,K+%ZT%Z79>Q3$RV8ZXR1E526CZ$NI#K"<
MY!2&=U.GFK4DJS5[+L(.DV<=G;F#*X8X3@T=@,$DE>'IX/YT'HK@:"NEI#:[
M5*BAP=W5AAMGNIOB*KL^O.JT.UFW?9.N66:5K-Y+BAU\!7H]R&P=&QNN4F%F
MGXOXPJ>:\%S5B$+:?)PN_"6':"^7)**A)+<Q\*YHS#-RD5-27$4YF4N1B_0U
M-A#R'/[CXI.09'+#]IG>'8B^8BZ:NHW0!N'0AMF!A)-)1F\B9B+R/XVWOW4N
M&DWX=7;.?O$_NEWVJ]/AOX:-_Y7C<)V8XRCN^7)B2B24I$EASB1!M:5SF"=E
MTA0IF;%YR6X"=F!)6'<])-$<^$^G-,_GR[A)DC1Y_H5F*4F!4[:*<L4@N VO
M%['H&XMRK&5:7\R9-$;IO%C!HOC]8[K,H.7W@X,#]AF\&-OAUCCE_1K[G&$G
MC.,'X87L^H-Q( P\UOJ84*&2&9F&29(6>">TD2K>*4P4R15Z69@P(SP'@IRK
MHQM=DUB[.?=0=E/@;O9-NWC%1=2;:W@09$S(("%!EJ49>9..4T,3[.;3)UKA
MO_P"?XFA0?W\TY[PTWW&63<?<N9^GB97<T^U)_HWI5<VR6'3@RXTY6S%J(J9
M#6.A!'SY6\-I6PLN3>7:^QRE[,V%IJHX#[)2DP.-Z;'U[%TV,%B<4P^5X*V%
M"6ZC0L4]E,U1Z>M-3,R^%6&4+5 [D XR#,Z;PND@DU59.:Z^]\$&_XG(>H."
M')0I$G(0)1'!Q*=IC/@[R'I)A%IXO$!,<$F8(17B84P687&%<=62<(_>'I!&
MY_7O'Z)DEJ[RW\_O4#8D4#'(M<J:R&Z-W#8'RH5%$Q[O&5]E2R]'FN#/2H:L
M^8$S`CFJ9>Y2RN">7AWHS\*\P-]&L ]0_%*XEW(<UW&J-9)8!IU+@Z)HW RH
M]"HIOE%"8))NEQ)X]*B1&$S>#O61-XA7ENE[KO,W#;<%!8(27>%T"*Z9DPS>
M(CDI<-S,2\BQ5FXJ#6VZALY0:AJ"MTP-^'GCD*[Q,PY2S%AM>J<U#KU*/
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
MQ0(9])Z7\";_21A_O+;Z.?/@+GGBN*01;?'QC:J[+)J=%,[/4LE2;AM767^
M26F0,WY,976KE?7B^"%TQ(X(&N>]'EI%\2.IR#T"I2+H?8\/></X#L>'[(F\
MWL3=@;1X9C4P+5%(K06T]IT2LAOAPVRC#F3R[H0DC2T4B6^P<P-#0GVSH_71
M5(()<_X2&1]^8V(#1VQ3*PJ\B!\RB:.94<N9U(?N5G=3\<H9RX?2NN9\^L27
M2#UE"5^';$.IO5$S*KVSV>YU=E[=RWIYL]UMS5CL)<XV=;=;32[?YNQ,IK-Y
M,ORUSDZ_X9I^QON=C5[V8E?60=^_I@0?@>I6YK$M`C_]ML +T?0L.^AS] AW
M#PA2LYY0H35X+6_(=L37EXP59?#9\)#7-;Z^S][NP);P=X8N\[#R+1#D%:K@
M\2%DWH /)/]$C;\3U%A8?B-L+.D>!C>6W.X!'(LJI SR2O8^H+<I!=</,R3#
M!P=H/_@T"\*M1Q.-8'0O@/;\#ANJT%DIFU[.CRZ?@\GBR%50K)#.!10?33;(
M/(/Y[>VMA<=6X;!59EV/=)JB[8K#VB:U7OUGAG/Q/C^YQ-!A-\G*JTOVFESG
MLJ%-`U?U$\@W9%<2&._*]A-8_YJ'C\!\_[67P(!R_00&I.LGX'FWFB#G+PMW
M"4QL-O?SL$@,T+>"9.+G8AWR+$9UWRY>!QG6?KKM]WLWXL EUO\)(%@A0C)_
MR 8]SUU?]B5A%R\2:I7,%?I@A"7(5#@;3$84ZFJ1M4C%OTDBZ(RUUO+]DQF#
MS'Z;F*-Z_A)^IGSQQBK\YB[BMA%[) H_Z2U$XOQ YLZHR,D56[_2//9RE5\3
M\/T#*)%^H^LLXM]$8-S7[?<S]:\$;("$N0Z;2G76JX3U96BLZ5M7"DIN6O.J
M"2RO,[M2^NB1T>)*_\?+P>W$0S_[.V>,SK2"?D/^_:%2/YPXV4+FS5AC37EK
M((T5>)Z4MH./3VZ\\FB97]Y?TO5XWRZH6FULL [\AI?A]&2[1RD[P'3.`I,X
MG5^$,E#W?U!+`P04````" "F9DHM&0P-L8D```#!````$0```')E9VDO35-3
M0T-04DHN4T-#;8[!"L(P$$3O@?[#?D'!NQ&D=RGHK4B(Z=:V--FPV8C^O:T1
M3\(P`P/SF.[<--=*K:XOXY1@E85$F1V"HWZS($P+#-."E>I:IAF=[.K'+9:=
M^5;F9#UJV2"Q-!LLD$ ./?(_?\].T5D:]_ST(@#[*"Y+P%.XP$(.,"#XE
MYR+/]1J?0X=*O0%02P,$% ````@`I69*+?88%CZ/`0``?0(``!$```!R96=I
M+U!R;VIE8W0Q+G9B<%U12V^;0!"^(_$?+'QI*X5N<-1+M0<'AQ:IQBBXSL67
M!09GTWV@W<&Q4_6_=Q><]('0ZGMH=KZ9W9Y[H'<G"(-,&TG]<1UW1H;!/71@
M0#5 /^R__"2$).1F0:X<N!SI*YJ^FT^_YDE,YF0>Q_O__H>\*+;[ZFP1Y"+9
M6VRU@"1&4<\WW^YFRP&U9,BU"H.U;@<!5.KV'@[<HCE_GOU%XIK9,*B0&1QZ
M&HUYHS!(M91,M8N$1HX53 *-2J.?H$%O?P71IUHAG#!?T8A,%;UK60MP'6'2
MUNQ)FQT8>NTP5Q,F?A5';EVZ"_5Q<]48D*#PHE5@CF"JH>^UP8P+L%YUIJ\;
M>ZGS%&MI&J9X,UM^K"XQN!AGW_JG<$6;'KGD+_]H&3MJ4[IV?)!NKG<HWWLY
M==%W')Y74 ^'7'7:BX5>"LXL5P?/;O6@6IL^0O-CO-RE[(1^?A,R46JN\ ]?
MY;LW\ET97PYM5HY#^K6/ZQH]A@C>G%:$C*L);Q\-L+8$LZG]`WAIS4[%(&LG
M=9-K_8Y_`U!+`P04````" "F9DHM328]4T8```!3````$0```')E9VDO4')O
M:F5C=#$N=F)W<\LORC54L%6PL- !8W-#8QT%,T,#'04=!2,C"#8S,==1,#4Q
MT5%PYN7*S4\)2DW/+"XIJ@1J`PF"L)F9)5")F9F.`B\7`%!+`P0*``````"F
M9DHM````````````````!0```')E9VDO4$L!`A0`% ````@`I&9*+6RPIQ;6
M`0``/P0```X``````````0`@`+:!`````')E9VDO1F]R;3$N9G)M4$L!`A0`
M% ````@`I&9*+:BT/GN % ``0&T``!0``````````0`@`+:!`@(``')E9VDO
M;6]D4F5G:7-T<GDN8F%S4$L!`A0`% ````@`IF9*+1D,#;&)````P0```!$`
M`````````0`!`"2!M!8``')E9VDO35-30T-04DHN4T-#4$L!`A0`% ````@`
MI69*+?88%CZ/`0``?0(``!$``````````0`@`+:!;!<``')E9VDO4')O:F5C
M=#$N=F)P4$L!`A0`% ````@`IF9*+4TF/5-&````4P```!$``````````0`@
M`+:!*AD``')E9VDO4')O:F5C=#$N=F)W4$L!`A0`"@``````IF9*+0``````
M``````````4````````````0`/]!GQD``')E9VDO4$L%!@`````&``8`;@$`
'`,(9````````
`
end


Neo.dk (11-10-2002)
Kommentar
Fra : Neo.dk


Dato : 11-10-02 09:57

[Snip meget lang kode ]


Tak skæbne for en lang kode

Nå men det virker jo perfekt !! - tak Robert !

Mvh Neo



Jan (10-10-2002)
Kommentar
Fra : Jan


Dato : 10-10-02 17:38

HeHe

Hvorfor alt den kode for så lidt???

Skriv bare
Dim startBib as string
startBib = App.path

Og du har det bibliotek hvor dit program bliv startet fra!



Jan (10-10-2002)
Kommentar
Fra : Jan


Dato : 10-10-02 17:40

Ups det var slet ikke det i mente.... Sorry glem det


"Jan" <janrc@hotmail.com> wrote in message
news:W1ip9.1266$f43.1871@news.get2net.dk...
> HeHe
>
> Hvorfor alt den kode for så lidt???
>
> Skriv bare
> Dim startBib as string
> startBib = App.path
>
> Og du har det bibliotek hvor dit program bliv startet fra!
>
>



Morten Fast (10-10-2002)
Kommentar
Fra : Morten Fast


Dato : 10-10-02 21:43

"Neo.dk" <neo___dk@hotmail.removethis.com> wrote in
news:3da3f4e9$0$72339$edfadb0f@dspool01.news.tele.dk:

> Hvordan finder man computerens "programmer"/"program files"
> bibliotek ?

Prøv at kigge på API-funktionen SHGetSpecialFolderLocation.
Den virker på alle windowsversioner fra 95/NT4 og op.

Du kan finde et eksempel i API-guiden fra www.allapi.net.

--
Vh Morten

Jan Damkjær Dahl (14-10-2002)
Kommentar
Fra : Jan Damkjær Dahl


Dato : 14-10-02 19:39

Prøv også WSH specialfolders

her er et lille klip fra hjælpefilen

The WshShell object's SpecialFolders property returns the WshSpecialFolders
object, which is a collection of special folders. This collection contains
references to Windows special folders (for example, the Desktop folder,
Start Menu folder, and Personal Documents folder). This collection retrieves
paths to special folders using the special folder name as the index. A
special folder's path depends on the user environment. The information
stored in a special folder is unique to the user logged onto the computer
system. If several different users have accounts on the same computer
system, several different sets of special folders are stored on the hard
disk.

The following special folders are available:

a.. AllUsersDesktop
b.. AllUsersStartMenu
c.. AllUsersPrograms
d.. AllUsersStartup
e.. Desktop
f.. Favorites
g.. Fonts
h.. MyDocuments
i.. NetHood
j.. PrintHood
k.. Programs
l.. Recent
m.. SendTo
n.. StartMenu
o.. Startup
p.. Templates


"
> --
> Vh Morten



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste